位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 原型链

提问人:刘团圆发布时间:2020-11-26

■知识点

    在JavaScript中,实例对象在读取属性时,总是先检查私有属性,如果存在,则会返回私有属性值,否则就会检索prototype原型,如果找到同名属性,则返回protoype原型的属性值。

    protoype原型允许引用其他对象。如果在protoype原型中没有找到指定的属性,则JavaScript将会根据引用关系,继续检索protoype原型对象的protoype原型,以此类推。

■实例设计

【示例1】下面的示例演示了对象属性查找原型的基本方法和规律。

function a (x) {         //构造函数 a

    this.x = x;

}

a.prototype.x = 0; //原型属性x的值为0

function b (x) { //构造函数 b

    this.x = x;

}

b.prototype = new a(1);   //原型对象为构造函数a的实例

function c(x){                    //构造函数c

    this.x = x;

}

c.prototype = new b(2);   //原型对象为构造函数b的实例

var d = new c(3);              //实例化构造函数c

console.log(d.x);              //调用实例对象d的属性x,返回值为3

delete d.x;                       //删除实例对象的私有属性x

console.log(d.x);             //调用实例对象d的属性x,返回值为2

delete c.prototype.x;      //删除c类的原型属性x

console.log(d.x);             //调用实例对象d的属性x,返回值为1

delete b.prototype.x;     //删除b类的原型属性x

console.log(d.x);            //调用实例对象d的属性x,返回值为0

delete a.prototype.x;     //删除a类的原型属性x

console.log(d.x);           //调用实例对象d的属性x,返回值为undefined

【示例2】在JavaScript中,一t刀都是对象,函数是第一型。Function和Object都是函数的实例。构造函数的父原型指向Function的原型,Function.prototype的原型是Object的原型,Object的原型也指向Function的原型,Object.prototype是所有原型的顶层。

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

    console.log( "Function" );

}

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

    console.log( "Object" );

}

function f (){                                   //构造函数f

    this.a = "a”;

}

f.prototype = {                         //构造函数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是原型顶层

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部