An Object's __proto__ property references the same object as its internal [[Prototype]] (often referred to as "the prototype"), which may be an object or, as in the default case of Object.prototype.__proto__, null . This property is an abstraction error, because a property with the same name, but some other value, could be defined on the object too. If there is a need to reference an object's prototype, the preferred method is to use Object.getPrototypeOf.
A __proto__ pseudo property has been included in §B.3.1 of the draft ECMAScript ed. 6 specification (note that the specification codifies what is already in implementations and what websites may currently rely on).
__proto__ 疑似プロパティは、ECMAScript エディション6仕様書草案の§B.3.1に記載されている(この仕様は、既に実装されているものおよびウェブサイトが現在使用している可能性があるものを編纂したものであることに注意)。
__proto__ 偽プロパティは、ECMAScriptedドラフト第6版の仕様書の§B.3.1に含まれています(ただし、この仕様書はどれが既に実施されていて、どのウェブサイトが現在信頼できるかを体系化したものです)。
Note: that is two underscores, followed by the five characters "proto", followed by two more underscores.
When an object is created, its __proto__ property is set to reference the same object as its internal [[Prototype]] (i.e. its constructor's prototype object). Assigning a new value to __proto__ also changes the value of the internal [[Prototype]] property, except where the object is non–extensible.
To understand how prototypes are used for inheritance, see the MDN article Inheritance and the prototype chain.
In the following, a new instance of Employee is created, then tested to show that its __proto__ is the same object as its constructor's prototype.
オブジェクトが作成されると、その __proto__プロパティは、そのオブジェクトの内部の[[Prototype]](つまり、コンストラクタのプロトタイプ オブジェクト)として参照に設定される。オブジェクトが拡張不能である場合を除き、__proto__に新しい値を割り当てることによっても、内部[[Prototype]]プロパティの値が変化する。
プロトタイプが継承においてどのように使用されるかを理解するには、MDNの「Inheritance and the prototype chain(継承とプロトタイプ チェーン)」という記事を参照。
以下のコードでは、Employeeの新しいインスタンスが作成され、その後__proto__はそのコンストラクタのプロトタイプと同じオブジェクトであることを示すためのテストが行われている。
オブジェクトが作られると、その __proto__ プロパティが、その内部[[Prototype]](すなわち、その コンストラクターのプロトタイプオブジェクト)として同じオブジェクトを参照するように設定されます。 __proto__ に新しい変数が割り当てられると、オブジェクトが拡張不可能な場合を除き、内部[[Prototype]]のプロパティの値も変わります。
プロトタイプがインヘリタンスに関してどのように使用されるかは、MDNのインヘリタンスおよびプロトタイプチェインを参照してください。
続いて、Employeeの新しいインスタンスが作成され、その __proto__ がコンストラクターズプロトタイプとして同じオブジェクトであることがテストで示されます。
オブジェクトが作られると、__proto__ のプロパティぃは と同じオブジェクトを内部の[[Prototype]](コンストラクターのプロトタイプオブジェクト)。__proto__に新しいバリューをアサインすることで、拡張不可能でない限り、オブジェクトが内部の[[Prototype]]プロパティも変更される。
プロトタイプが継承にどう使用されるか理解するにはMDN article Inheritance and the prototype chain をみること。
以下には、Employeeという新しいインスタンスが作成され、__proto__がコンストラクターのプロトタイプと同じオブジェクトであることを検証する。
ありがとうございます。こちらで使わせていただいています。
http://matome.naver.jp/odai/2138031670893990201