为什么等式一样,返回结果不一样?

刚在阮一峰大神书中看到如下代码,对于最后一个结果是 false 很疑惑。


var obj = {};

obj.hasOwnProperty('toString') // false


// 覆盖掉继承的 hasOwnProperty 方法

obj.hasOwnProperty = function () {

  return true;

};

obj.hasOwnProperty('toString') // true


Object.prototype.hasOwnProperty.call(obj, 'toString') // false(这里有疑惑)

自己一直都认为


Object.prototype.hasOwnProperty.call(obj, 'toString') 

// 等价于

obj.hasOwnProperty('toString') 

然后再chrome 的console里试了下


var obj = {};

obj.hasOwnProperty('toString') === Object.prototype.hasOwnProperty.call(obj, 'toString')


// log: true

这两种表达式是全等的呀,明明只是写法不同。

所以阮大神的那个代码里,最后一个到底为什么是false??


求大神解答,谢谢。


守着一只汪
浏览 385回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript