为什么Javascript原型链中的函数有两个Object

时间:2017-01-09 20:12:30

标签: javascript

我正在查看下面代码的层次结构(原型链),而我并不了解第二个(较低对象)的来源。我明白了" t"变量是Object对象的实例,但为什么第一个Object下有另一个Object?我认为Object是链中的最后一个环节。所以,我很困惑,因为这打印test =>对象=>对象

function test (){ }
var t = new test()
console.log(t)

enter image description here

澄清:使用Chrome浏览器

1 个答案:

答案 0 :(得分:4)

t是一个对象,其原型为 一个对象 ,其原型为 Object.prototype 。这是预期的;如果t的原型直接Object.prototype,则向t's原型添加属性会影响所有对象,而不仅仅是t和{{1}创建的其他对象}。这是不可取的,因此中间对象的原型是Object.prototype。

进一步说明:声明一个函数时,其prototype属性设置为一个新的空对象,默认情况下,对象的原型为new test

Object.prototype的原型是t,而test.prototype的原型是test.prototype