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

JavaScript 原型鏈

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-26

■知識(shí)點(diǎn)

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

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

■實(shí)例設(shè)計(jì)

【示例1】下面的示例演示了對(duì)象屬性查找原型的基本方法和規(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);   //原型對(duì)象為構(gòu)造函數(shù)a的實(shí)例

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

    this.x = x;

}

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

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

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

delete d.x;                       //刪除實(shí)例對(duì)象的私有屬性x

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

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

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

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

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

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

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

【示例2】在JavaScript中,一t刀都是對(duì)象,函數(shù)是第一型。Function和Object都是函數(shù)的實(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,說(shuō)明 f 是 Function 的實(shí)例

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

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

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

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

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

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

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