Javascript 为什么Object.prototype.hasOwnProperty.call(编号“toString”)返回false?
并暗示:Javascript 为什么Object.prototype.hasOwnProperty.call(编号“toString”)返回false?,javascript,google-chrome,ecmascript-6,Javascript,Google Chrome,Ecmascript 6,并暗示: Object.prototype.hasOwnProperty.call(foo,“bar”)等同于(并且比)foo.hasOwnProperty(“bar”) 但是,当运行Chrome 75.0.3770.142时,我看到: Number.prototype.hasOwnProperty(“toString”)//true Object.prototype.hasOwnProperty.call(数字,“toString”)//false 问题: 这些不应该返回相同的值吗 假
等同于(并且比)Object.prototype.hasOwnProperty.call(foo,“bar”)
foo.hasOwnProperty(“bar”)
Number.prototype.hasOwnProperty(“toString”)//true
Object.prototype.hasOwnProperty.call(数字,“toString”)//false
实际上,您正在检查两件不同的事情:
将检查Number.prototype.hasOwnProperty(“toString”)
对象的原型是否包含Number
属性,并且它不是来自其原型链(具有Own属性)toString
与Object.prototype.hasOwnProperty.call(Number,“toString”)
基本相同-它不检查原型,而是检查Number.hasOwnProperty(“toString”)
对象本身Number
console.log(Number==Number.prototype)
嗯,您首先检查Number
prototype,然后只检查Number
<代码>编号!==Number.prototype@VLAZ你是说我应该调用Object.prototype.hasOwnProperty.call(Number.prototype,“toString”)
来代替吗?是的,因为你目前正在做Number.prototype.hasOwnProperty
vsNumber.hasOwnProperty
@VLAZ很好,谢谢。如果你将此作为答案发布,我会将其标记为已接受。