Object.prototype.hasOwnProperty.call(src, prop) 和 src.hasOwnProperty(prop) 的区别是什么呢?为什么要用 Object.prototype.hasOwnProperty.call(src, prop) 呢?
这跟对象的属性查找有关,如果对象本身有hasOwnProperty属性,就不会继续查找原型链上的这个方法去调用,也就是这个方法可能被重写,也可能像楼上演示的一样,src对象以及它的原型链上都没这个方法,src也就调不了这个方法。Object.prototype.hasOwnProperty.call相当于是为了保证调用的是Object原型对象上的hasOwnProperty方法。
这跟对象的属性查找有关,如果对象本身有
hasOwnProperty
属性,就不会继续查找原型链上的这个方法去调用,也就是这个方法可能被重写,也可能像楼上演示的一样,src对象以及它的原型链上都没这个方法,src
也就调不了这个方法。Object.prototype.hasOwnProperty.call
相当于是为了保证调用的是Object原型对象上的hasOwnProperty
方法。