原型

Xebcnor     最近更新时间:2020-08-04 05:37:59

254

每个对象都与对象原型关联,继承了对象原型的属性。

所有对象创建时都从字面量对象({})继承,且都自动链接到的Object.prototype,Object.prototype 来自JavaScript标准。

当JavaScript解释器(在浏览器中一个模块),试图找到一个属性,它要检索,如下面的代码:

var adult = {age: 26},
    retrievedProperty = adult.age;
 // 看上一行

首先,解释器检查对象有的每个属性。例如,adult只有一个自己的属性 - age。但是,除此之外,实际上还有几个属性,这是继承自Object.prototype。

var stringRepresentation = adult.toString();
 // 变量的值为 '[object Object]'

toString 是一个 Object.prototype 的属性, 这是继承。它有一个函数,返回值为一个对象的字符串。如果希望它返回一个更有意义的东西,那么你可以将其覆盖。简单的添加一个属性到adult对象。

adult.toString = function(){
    return "I'm "+this.age;
}

如果现在调用 toString 函数,解释器将发现一个新的对象中的属性然后停止。

解释器解析某个属性时会先检查对象自己,再进一步检查他的原型。

要设置自己的对象为原型而不是默认的Object.prototype,你可以调用以下的Object.create

展开阅读全文