位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 檢測原型對象

提問人:劉團圓發(fā)布時間:2020-11-26

■知識點

在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

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部