如何检查JavaScript对象或数组中是否存在特定键?
如果某个密钥不存在,并且我尝试访问它,它会返回false吗?或抛出错误?
以下两个语句是否产生相同的输出?有没有理由偏向另一种方式?
if (key in object)
if (object.hasOwnProperty(key))
Run Code Online (Sandbox Code Playgroud) 如果我理解正确,Javascript中的每个对象都继承自Object原型,这意味着Javascript中的每个对象都可以通过其原型链访问hasOwnProperty函数.
在阅读require.js的源代码时,我偶然发现了这个函数:
function hasProp(obj, prop) {
return hasOwn.call(obj, prop);
}
Run Code Online (Sandbox Code Playgroud)
hasOwn是一个参考Object.prototype.hasOwnProperty.写这个函数是否有任何实际的区别
function hasProp(obj, prop) {
return obj.hasOwnProperty(prop);
}
Run Code Online (Sandbox Code Playgroud)
既然我们在这,我们为什么要定义这个功能呢?这只是一个快捷方式和本地缓存属性访问(轻微)性能提升的问题,还是我错过了任何可能在没有此方法的对象上使用hasOwnProperty的情况?