JavaScript 檢測原型對象
■知識點
在JavaScript中,Function對象預定義了 prototype屬性,該屬性指向一個原型對象。當定義構造函數時,系統(tǒng)會自動創(chuàng)建一個對象,并傳遞給prototype屬性,這個對象被稱為原型對象。原型對象可以存儲構造類型的原型屬性,以便讓所有實例對象共享。
■實例設計
下面的代碼為自定義類型函數定義兩個原型成員。
var f = function (){}
f.prototype = {
a : 1,
b : function (){
return 2;
}
}
console.log (f.prototype, a) ; //讀取函數的原型對象的屬性a,返回1
console.log (f. prototype.b() ) ; //讀取函數的原型對象的屬性b,返回2
當使用new運算符調用函數時,就會創(chuàng)建一個實例對象,這個實例對象將繼承構造函數的原型對象中所有屬性。
var o = new f (); //實例對象
console.log (o.a); //訪問原型對象的屬性
console.log (o.b ()); //訪問原型對象的厲性
為了方便判定,Object對象定義了 isPrototypeOf()方法,該方法可以檢測一個對象的原型對象。針對上面的示例,可以判斷f.prototype就是對象o的原型對象,因為其返回值為true。
var b = f.prototype.isPrototypeOf(o);
console.log(b);
■小結
下面的示例演示了各種特殊對象的原型對象。
函數的原型對象可以是Object.prototype或者是Function.prototype:
var f = function (){}
console.log(Object.prototype.isPrototypeOf(f)); //返回 true
console.log(Function .prototype.isPrototypeOf(f)); //返回 true
Object和Function對象的原型對象比較特殊:
console.log(Function .prototype.isPrototypeOf(Object)); //返回 true
console.log(Object.prototype.isPrototypeOf(Function)); //返回 true
Object.prototype 和 Function.prototype 的原型對象不是Object.prototype,而 Function.prototype 的原型對象可以是Function.prototype,但是Object.prototype的原型對象絕對不是Function .prototype:
console.log (Object.prototype.isPrototypeOf (Object.prototype)); //返回 false
console.log (Object.prototype.isPrototypeOf (Function .prototype)); //返回 true
console.log (Function.prototype.isPrototypeOf (Function.prototype)); //返回 false
console.log (Function.prototype.isPrototypeOf (Object.prototype)); //返回 false
點擊加載更多評論>>