在我的JavaScript代码中,我有一个包含以下语句集的函数
function someFunc(object,action){
for(var property in object){
if(Object.prototype.hasOwnProperty.call(object, property)){
//TODO
}
}
}
}
如果我用
替换函数内的 if语句if(obj.hasOwnProperty(property)){
//TODO
}
对我来说都很好。我想知道的是,其中哪些是更好的方法,为什么?我知道obj.hasOwnProperty(property)
检查对象的个人属性。我也想知道电话是如何链接的
object.prototype.hasOwnProperty.call(object, property)
答案 0 :(得分:4)
我通常会使用obj.hasOwnProperty(prop)
。
不那么间接,对于那些试图阅读和理解你的代码的人来说,它会更加清晰。它的运行速度会稍快,因为您不需要重新绑定this
的上下文。
我无法想到许多需要要求使用其他方法的陷阱。
obj
继承自null
而非Object.prototype
hasOwnProperty
obj
hasOwnProperty
已在obj
的原型链中重新声明所有这些情况在日常应用程序中都非常罕见,如果您确实找到了其中一种,那么最安全,最简单,最好的解决问题,而不是使用更具防御性的{{1} } form。