最佳答案
如果我理解正确的话,JavaScript 中的每个对象都继承自 Object 原型,这意味着 JavaScript 中的每个对象都可以通过其原型链访问 hasOwnProperty 函数。
在阅读 需要的源代码时,我偶然发现了这个函数:
function hasProp(obj, prop) {
return hasOwn.call(obj, prop);
}
hasOwn
是对 Object.prototype.hasOwnProperty
的引用。将这个函数写成
function hasProp(obj, prop) {
return obj.hasOwnProperty(prop);
}
既然我们已经知道了,为什么还要定义这个函数呢?这仅仅是一个快捷方式和本地缓存属性访问以获得(轻微的)性能提升的问题吗? 还是我忽略了 hasOwnProperty 可能用于没有这种方法的对象的任何情况?