为什么不同的对象具有相同的 proto 和相同的分配属性?
例如:
let a1 = {name: 'firstName'};
let a2 = {name: 'middleName'};
let a3 = Object.assign({}, {name: 'lastName'});
a1.__proto__ === a2.__proto__ // true
a1.__proto__ === a3.__proto__ // true
但是如果我使用构造函数:
let SomeFunc = function(){}
let b1 = new SomeFunc();
b1.__proto__ === a1.__proto__ // false
The __proto__ is different
看起来所有使用直接项目语法创建的项目都具有相同的 proto 。
答案 0 :(得分:1)
因为所有三个对象都继承自同一原型对象Object.prototype
。这是根据对象文字创建的对象的默认设置。
在第二个示例中,b1
确实继承自SomeFunc.prototype
,因为它是由new
运算符创建的。与const b2 = new SomeFunct
:Object.getPrototypeOf(b2) === Object.getPrototypeOf(b1)
相同。