JavaScript 訪問原型
■知識(shí)點(diǎn)
原型實(shí)際上就是一個(gè)普通對(duì)象,繼承了 Object類,由JavaScript自動(dòng)創(chuàng)建并依附于每個(gè)函數(shù)身上。 訪問原型對(duì)象有3種方法,簡(jiǎn)單說明如下。
obj.__proto__
obj .constructor.prototype
Object.getPrototypeOf(obj)
其中,obj表示一個(gè)實(shí)例對(duì)象,constructor表示構(gòu)造函數(shù)。
__proto__ (前后各兩個(gè)下劃線)是一個(gè)私有屬性,可讀可寫,與prototype屬性相同,都可以訪問原型對(duì)象。Object.getPrototypeOf(obj)是一個(gè)靜態(tài)函數(shù),參數(shù)為實(shí)例對(duì)象,返回值是參數(shù)對(duì)象的原型對(duì)象。
■實(shí)例設(shè)計(jì)
下面的代碼創(chuàng)建一個(gè)空構(gòu)造函數(shù),然后實(shí)例化,分別使用上述3種方法訪問實(shí)例對(duì)象的原型。
var F = function (){}; //構(gòu)造函數(shù)
var obj = new F(); //實(shí)例化
var protol = Object.getPrototypeOf( obj ); //引用原型
var proto2 = obj._ _proto_ _; //引用原型,注意,IE暫不支持
var proto3 = obj.constructor.prototype; //引用原型
var proto4 = F.prototype; //引用原型
console.log( protol === proto2 ); //true
console.log( protol === proto3 ); //true
console.log( protol === proto4 ); //true
console.log( proto2 === proto3 ); //true
console.log( proto2 === proto4 ); //true
console.log( proto3 === proto4 ); //true
點(diǎn)擊加載更多評(píng)論>>