[英]isPrototypeOf and __proto__ have different results
以下两个表达式:
"abc".__proto__.__proto__ === Object.prototype // true
Object.prototype.isPrototypeOf("abc") // false
第一个表达式证明Object.prototype
位于“ abc”的原型链中。 但是,第二个表达式得到相反的结果。
我很困扰。 希望任何人都能解释。
"abc"
不是对象。 当您评估"abc".__proto__
,将隐式构造一个String
包装器对象以检索其原型,而Object.prototype
在该包装器对象的原型链中。
Object.prototype.isPrototypeOf("abc")
不会构造包装器对象。 它仅查看"abc"
,看到"abc"
不是对象,也没有原型链,并返回false。 您可以在ECMAScript规范 (版本6)中看到以下内容:
使用参数V调用isPrototypeOf方法时,将执行以下步骤:
- 如果Type(V)不是Object,则返回false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.