情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

__proto__ プロパティ (Object) (JavaScript)

指定されたオブジェクトの内部プロトタイプへの参照が含まれます。

object.__proto__

object

必須。

プロトタイプの設定対象となるオブジェクト。

__proto__ プロパティを使用して、オブジェクトのプロトタイプを設定できます。

オブジェクトまたは関数は、新しいプロトタイプのすべてのメソッドとプロパティに加えて、新しいプロトタイプのプロトタイプ チェーン内のすべてのメソッドとプロパティを継承します。 オブジェクトが保持できるプロトタイプは 1 つだけであるため (プロトタイプ チェーン内の継承されたプロトタイプは含まれない)、__proto__ プロパティを呼び出すと、前のプロトタイプが置き換えられます。

プロトタイプは拡張可能オブジェクトでのみ設定できます。 詳細については、「Object.preventExtensions 関数 (JavaScript)」を参照してください。

メモ メモ

__proto__ プロパティ名の先頭と末尾には 2 つのアンダースコアが付いています。

オブジェクトのプロトタイプを設定する方法のコード例を次に示します。

function Rectangle() {
}

var rec = new Rectangle();

if (console && console.log) {
    console.log(rec.__proto__ === Rectangle.prototype);  // Returns true
    rec.__proto__ = Object.prototype;
    console.log(rec.__proto__ === Rectangle.prototype);  // Returns false
}

次のコード例は、プロパティをプロトタイプに追加することによってオブジェクトに追加する方法を示しています。

var proto = { y: 2 };

var obj = { x: 10 };
obj.__proto__ = proto;

proto.y = 20;
proto.z = 40;

if (console && console.log) {
    console.log(obj.x === 10);  // Returns true
    console.log(obj.y === 20);  // Returns true
    console.log(obj.z === 40);  // Returns true
}

次のコード例では、String オブジェクトで新しいプロトタイプを設定し、そのオブジェクトにプロパティを追加します。

var stringProp = { desc: "description" };

String.__proto__ = stringProp;
var s1 = "333";
var s2 = new String("333");

if (console && console.log) {

    console.log(String.desc === "description"); // Returns true
    console.log(s1.desc === "description");     // Returns false
    console.log(s2.desc === "description");     // Returns false

    s1.__proto__ = String;  // Can't be set.
    s2.__proto__ = String;

    console.log(s1.desc === "description"); // Returns false
    console.log(s2.desc === "description"); // Returns true
}

Internet Explorer 11 標準ドキュメント モードでサポートされています。ストア アプリ (Windows 8.1 および Windows Phone 8.1) でもサポートされます。「バージョン情報」を参照してください。

Quirks、Internet Explorer 6 標準、Internet Explorer 7 標準、Internet Explorer 8 標準、Internet Explorer 9 標準、Internet Explorer 10 標準の各ドキュメント モードではサポートされません。Windows 8 ではサポートされません。

コミュニティの追加

表示:
© 2014 Microsoft