【发布时间】:2016-05-22 10:34:39
【问题描述】:
我正在尝试找出我编写的函数的原型链
function Animal(voice)
{
this.voice = voice|| 'meaw'
}
Animal.prototype.speak =function() {
console.log(this.voice);
}
我知道 Animal 函数有一个原型属性指向它的原型对象。它的原型对象具有指向返回的构造函数和指向 Object 对象原型的 __proto__ 属性
我知道每个函数对象都继承自 Function 的对象 prototype 并继承自 Object 的对象 prototype,包括 __proto__ 属性。现在,当我进一步研究它时,我发现 Function 的 对象 prototype 和 __proto__ 属性链接到同一个原型对象。
console.log(Animal.__proto__.constructor.__proto__ == Animal.__proto__.constructor.prototype ); //true
console.log(Animal.__proto__.constructor.__proto__ == Animal.__proto__); //true
然后我做了一些进一步的测试来证明它
Animal.__proto__.constructor.__proto__.test = 28;
console.log(Animal.__proto__.constructor.__proto__.test); // prints 28
console.log(Animal.__proto__.test); //prints 28
这意味着它的原型和从它继承的原型是相同的。有什么理由这样设置吗?
【问题讨论】:
标签: javascript javascript-objects