每个对象都与对象原型关联,继承了对象原型的属性。
所有对象创建时都从字面量对象({}
)继承,且都自动链接到的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
: