4
为什么使用Object.prototype.hasOwnProperty.call(myObj,prop)代替myObj.hasOwnProperty(prop)?
如果我理解正确,那么Javascript中的每个对象都是从Object原型继承的,这意味着Javascript中的每个对象都可以通过其原型链访问hasOwnProperty函数。 在阅读require.js的源代码时,我偶然发现了该函数: function hasProp(obj, prop) { return hasOwn.call(obj, prop); } hasOwn是对的引用Object.prototype.hasOwnProperty。将此功能编写为 function hasProp(obj, prop) { return obj.hasOwnProperty(prop); } 既然如此,我们为什么要完全定义此功能?是否只是为了获得(略微)提高性能而使用快捷方式和对属性访问进行本地缓存的问题,还是我缺少在没有此方法的对象上使用hasOwnProperty的情况?