说,如果我们创建对象
var ob = {}
当我检查
ob.constructor.prototype == ob.__proto__
两者都一样怎么可能?
答案 0 :(得分:2)
ob
是一个普通对象,因此其构造函数(即obj.constructor
)为Object
。 __proto__
指向某物的内部原型,而普通对象的内部原型为Object.prototype
。
如果您对原型继承有所了解,那么如果ob
是使用new
创建的,则该行为可能更容易理解(只是为了了解其工作原理-您实际上不应使用{{1 }}):
new Object
使用var ob = new Object();
console.log(ob.constructor.prototype == ob.__proto__);
// same as
console.log(ob.constructor.prototype == Object.prototype);
// same as
console.log(Object.prototype == Object.prototype);
创建的任何内容都可以看到相同的行为-其new
将是其constructor.prototype
:
__proto__