我正在查看下面代码的层次结构(原型链),而我并不了解第二个(较低对象)的来源。我明白了" t"变量是Object对象的实例,但为什么第一个Object下有另一个Object?我认为Object是链中的最后一个环节。所以,我很困惑,因为这打印test =>对象=>对象
function test (){ }
var t = new test()
console.log(t)
澄清:使用Chrome浏览器
答案 0 :(得分:4)
t
是一个对象,其原型为 一个对象 ,其原型为 Object.prototype 。这是预期的;如果t
的原型直接Object.prototype
,则向t's
原型添加属性会影响所有对象,而不仅仅是t
和{{1}创建的其他对象}。这是不可取的,因此中间对象的原型是Object.prototype。
进一步说明:声明一个函数时,其prototype属性设置为一个新的空对象,默认情况下,对象的原型为new test
。
Object.prototype
的原型是t
,而test.prototype
的原型是test.prototype
。