Object.prototype.hasOwnProperty.call() vs Object.prototype.h
Object.prototype.hasOwnProperty.call() vs Object.prototype.hasOwnProperty()
在我的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)
我通常会选择obj.hasOwnProperty(prop)
。
间接性更少,对其他试图阅读和理解您的代码的人来说会更清楚。它的运行速度也会稍快,因为您不需要重新绑定this
的上下文。
我想不出有多少陷阱需要使用其他方法。
- 如果
obj
继承自null
而非Object.prototype
- 如果
hasOwnProperty
已在obj
上重新声明 - 如果
hasOwnProperty
已在obj
的原型链中重新声明
所有这些场景在日常应用程序中都非常罕见,如果你找到了其中一个,那么在那里解决问题是最安全、最简单、最好的,而不是使用更具防御性的Object.prototype.hasOwnProperty.call
形式。
相关文章:
- Object.prototype using 'this'
- ExtJS 4 Object.prototype fail
- Object.prototype.hasOwnProperty.call() vs Object.prototype.h
- 为什么使用 Object.prototype.hasOwnProperty.call(myObj, prop) 而不是
- 如何添加 Object.prototype.x?设置为 enumerable:false
- 为什么 Object.prototype 和 Object.getOwnPropertyNames(Object.pro
- 引用 Object.prototype.toString.call 导致“TypeError: undefined 不是
- Object.seal(Object.prototype)是否使所有对象不可变?
- Object.Prototype 方法和 IIFE(立即调用的函数表达式)中的“use strict”
- Object.prototype.values 会破坏应用程序
- object.key = fn() 与 object.prototype.key = fn() 之间的差异
- 有没有办法从某人更改Object.prototype.hasOwnProperty中恢复
- JavaScript 中 Function.prototype 和 Object.prototype 之间的区别
- 为什么 Object.prototype.toString 返回 [object Object]
- Symbol.toPrimitive vs Object.prototype.valueOf
- Object.prototype is Verboten?
- Object.prototype.__defineGetter__(和__defineSetter__)填充物
- Object.prototype.toString.call(currentFruit) === "[obje
- Getting Object.prototype.hasOwnProperty() key
- 直接访问原型的值,即 Object.prototype.toString.call()