【发布时间】:2021-07-06 18:18:49
【问题描述】:
在第一种情况下,原型链比在第二种情况下更长。
function Func() {};
Func.__proto__ == Function.prototype; //true
Func.__proto__.__proto__ == Object.prototype; //true
Func.__proto__.__proto__.__proto__ == Object.prototype; //false
Func.__proto__.__proto__.__proto__.__proto__ == Object.prototype; //Cannot read property '__proto__' of null
在第二种情况下,它更短。
let obj = {};
obj.__proto__ == Object.prototype; //true
obj.__proto__.__proto__ == Object.prototype; //false
obj.__proto__.__proto__.__proto__ == Object.prototype; //Cannot read property '__proto__' of null
为什么?第二个示例obj .__ proto __.__ proto__ == Object.prototype 的行给出了错误。但在第一种情况下,类似的代码行Func .__ proto __.__ proto__ == Object.prototype 给出了 true。
有什么区别?为什么第一个示例的原型链比第二个更长?这取决于什么?
【问题讨论】:
-
一个的原型链比另一个长。因为里面的东西比较多。对象的原型链中有多少东西是您正在处理的对象的第一个原型。
标签: javascript prototype