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

JavaScript 原型鏈

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

■知識點

    在JavaScript中,實例對象在讀取屬性時,總是先檢查私有屬性,如果存在,則會返回私有屬性值,否則就會檢索prototype原型,如果找到同名屬性,則返回protoype原型的屬性值。

    protoype原型允許引用其他對象。如果在protoype原型中沒有找到指定的屬性,則JavaScript將會根據(jù)引用關(guān)系,繼續(xù)檢索protoype原型對象的protoype原型,以此類推。

■實例設(shè)計

【示例1】下面的示例演示了對象屬性查找原型的基本方法和規(guī)律。

function a (x) {         //構(gòu)造函數(shù) a

    this.x = x;

}

a.prototype.x = 0; //原型屬性x的值為0

function b (x) { //構(gòu)造函數(shù) b

    this.x = x;

}

b.prototype = new a(1);   //原型對象為構(gòu)造函數(shù)a的實例

function c(x){                    //構(gòu)造函數(shù)c

    this.x = x;

}

c.prototype = new b(2);   //原型對象為構(gòu)造函數(shù)b的實例

var d = new c(3);              //實例化構(gòu)造函數(shù)c

console.log(d.x);              //調(diào)用實例對象d的屬性x,返回值為3

delete d.x;                       //刪除實例對象的私有屬性x

console.log(d.x);             //調(diào)用實例對象d的屬性x,返回值為2

delete c.prototype.x;      //刪除c類的原型屬性x

console.log(d.x);             //調(diào)用實例對象d的屬性x,返回值為1

delete b.prototype.x;     //刪除b類的原型屬性x

console.log(d.x);            //調(diào)用實例對象d的屬性x,返回值為0

delete a.prototype.x;     //刪除a類的原型屬性x

console.log(d.x);           //調(diào)用實例對象d的屬性x,返回值為undefined

【示例2】在JavaScript中,一t刀都是對象,函數(shù)是第一型。Function和Object都是函數(shù)的實例。構(gòu)造函數(shù)的父原型指向Function的原型,F(xiàn)unction.prototype的原型是Object的原型,Object的原型也指向Function的原型,Object.prototype是所有原型的頂層。

Function.prototype.a = function(){      //Function原型方法

    console.log( "Function" );

}

Object.prototype.a = function(){        //Object原型方法

    console.log( "Object" );

}

function f (){                                   //構(gòu)造函數(shù)f

    this.a = "a”;

}

f.prototype = {                         //構(gòu)造函數(shù)f的原型方法

    w : function(){

        console.log( "w" );

    }

}

console.log ( f instanceof Function );                           //返回 true,說明 f 是 Function 的實例

console.log ( f.prototype instanceof Object );          //返回 true,說明 f 的原型也是對象

console.log ( Function instanceof Object >;                    //返回 true,說明 Function 是 Object 的實例

console.log ( Function.prototype instanceof Object );    //返回 true, 說明 Function原型是 Object的實例 

console.log ( Object instanceof Function );                     //返回 true,說明 Object 是 Function 的實例 

console.log ( Object.prototype instanceof Function );    //返回 false,說明 Object.prototype是原型頂層

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

相關(guān)視頻回答
回復(fù)(0)
返回頂部