Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】SyntaxError: property name __proto__ appears more than once in object literalエラーの使い方

SyntaxError: property name __proto__ appears more than once in object literalエラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

SyntaxError: property name proto appears more than once in object literalオブジェクトは、JavaScriptのコードが文法的に誤っていることを示すSyntaxErrorの一種です。このエラーは、オブジェクトを定義する際に使用するオブジェクトリテラル、つまり{ key: value }のような形式の中で、特別なプロパティ名である__proto__を二回以上記述した場合に発生します。

JavaScriptでは、オブジェクトリテラル内で同じプロパティ名を複数回記述すると、通常は後から定義された値が前の値を上書きします。しかし、__proto__プロパティは、オブジェクトの継承元、すなわち「プロトタイプチェーン」を設定するための非常に重要な役割を担っています。そのため、意図しないプロトタイプチェーンの変更を防ぐ目的から、この__proto__プロパティをオブジェクトリテラル内で複数回定義することは構文エラーとして禁止されています。

このエラーが発生した場合は、コード内のオブジェクトリテラルを確認し、__proto__プロパティが一度だけ定義されていることを確認してください。もし複数のプロトタイプを設定したい、または動的にプロトタイプを変更したい場合には、Object.setPrototypeOf()のような専用のメソッドを使用する必要があります。システムエンジニアを目指す上で、このエラーはJavaScriptのオブジェクト指向の基本であるプロトタイプチェーンの理解を深める良い機会となるでしょう。

構文(syntax)

1const obj = {
2  __proto__: null,
3  __proto__: Object.prototype
4};

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語