技术

JavaScript小知识:原型链上的就近原则

当从一个对象那里调取属性或方法时,如果该对象自身不存在这样的属性或方法,就会去自己关联的prototype对象那里寻找,如果prototype没有,就会去prototype关联的前辈prototype那里寻找,如果再没有则继续查找Prototype.Prototype引用的对象,依次类推,直到Prototype.….Prototype为undefined(Object的Prototype就是undefined)从而形成了所谓的“原型链”。

 

当原型链上同时拥有同样的属性,原型链会首先使用最近对象的属性或方法,而不会使用它的前辈的属性或方法。如:


var a = {
    x: 10,
    y: 10,
    calculate: function(z) {
        return this.x + this.y + z;
    }
};


var b = {
    y: 20,
    __proto__: a
};


var c = {
    y: 30,
    __proto__: a
};


b.calculate(30);//60
c.calculate(40);//80

 

亲自来试一试吧?

 

我们都在黑暗中寻找光明。

留言

您的电子邮箱地址不会被公开。