在我的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)
发布于 2016-05-05 09:30:07
我通常都会和obj.hasOwnProperty(prop)一起去。
它的间接方向较少,对于试图阅读和理解您的代码的其他人来说,这将更加清晰。它的运行速度也会稍微快一些,因为您不需要重新绑定this的上下文。
我想不出有多少陷阱需要你使用另一种方法。
obj继承自null而不是Object.prototypehasOwnProperty已在obj上重新声明hasOwnProperty在obj的原型链中被重新声明所有这些场景在日常应用程序中都是非常罕见的,如果您确实找到其中的一种,那么在那里解决问题是最安全、最简单和最好的,而不是使用更防御性的Object.prototype.hasOwnProperty.call表单。
https://stackoverflow.com/questions/37046946
复制相似问题