JavaScriptのprototype属性を理解する
1408 ワード
実は、プロトタイプについては一言でまとめることができます.
どの原型も対象で、対象だけ原型があります.
Functionのみprototype属性があり、このFunctionがコンストラクタとして生成されたときにオブジェクトが継承されるプロトタイプです.Functionのプロトタイプとそのプロトタイプの属性は関係ありません.
対象の原型は非標準的な属性の__u uを通すことができます.プロト.またはECMAScript 5の方法Object.get ProttypeOf()にアクセスします.
1実は間違っています.Objectというプロトタイプの最後のオブジェクトはプロトタイプがありません.しかし、もっと簡単に表現するために.プロトタイプのチェーンを見たら分かります.toString()のような定義されていない方法はどうやって来ますか?
上に述べた二義性は、文字の理解上のもので、文法自体には異義がない.プロトタイプは原型という意味ですが、対象の原型はプロトタイプではないです.
Functionはprototype属性がありますが、自分の原型とは関係がありません.この点を理解してから、プロトタイプチェーン、継承に関する文章を見たら分かりやすくなります.
以下はいくつかの例です.認識を深めることができます.
どの原型も対象で、対象だけ原型があります.
Functionのみprototype属性があり、このFunctionがコンストラクタとして生成されたときにオブジェクトが継承されるプロトタイプです.Functionのプロトタイプとそのプロトタイプの属性は関係ありません.
対象の原型は非標準的な属性の__u uを通すことができます.プロト.またはECMAScript 5の方法Object.get ProttypeOf()にアクセスします.
1実は間違っています.Objectというプロトタイプの最後のオブジェクトはプロトタイプがありません.しかし、もっと簡単に表現するために.プロトタイプのチェーンを見たら分かります.toString()のような定義されていない方法はどうやって来ますか?
上に述べた二義性は、文字の理解上のもので、文法自体には異義がない.プロトタイプは原型という意味ですが、対象の原型はプロトタイプではないです.
Functionはprototype属性がありますが、自分の原型とは関係がありません.この点を理解してから、プロトタイプチェーン、継承に関する文章を見たら分かりやすくなります.
以下はいくつかの例です.認識を深めることができます.
//
obj = {};
console.log( obj.__proto__ );
console.log( Object.getPrototypeOf(obj) );
console.log( obj.__proto__ === Object.getPrototypeOf(obj) );
// prototype
alert(obj.prototype) //undefined
//prototype , Function , Function , Function
var F = function(name){
this.name = name;
}
obj = {a:3,
get b (){
return this.a;
}
};
F.prototype = obj;
newObj = new F('new name');
newObj.name; // ,name newObj
newObj.a; //3
// obj。 :
Object.getPrototypeOf( newObj ) === obj; // true
newObj.__proto__ === obj; //true