【问题标题】:JavaScript object.hasOwnProperty(proName) vs lodash _.has(obj, proName) functionJavaScript object.hasOwnProperty(proName) vs lodash _.has(obj, proName) 函数
【发布时间】:2015-08-26 16:30:39
【问题描述】:

我在使用 JavaScript Object.hasOwnProperty(propName) 和 lodash _.has(obj, proName) 函数来确定对象是否具有属性之间进行辩论。

对于简单的情况,哪种方法更有效?对于复杂的情况?对于所有情况?

还有没有我没有提到的更好的库?

谢谢!

【问题讨论】:

  • 检查对象属性的复杂情况是什么?
  • 我想我指的是嵌套案例。
  • 你可以随时检查他们自己的方法,看看它是否符合你的需要,或者你可以少做:github.com/lodash/lodash/blob/3.2.1-npm-packages/lodash.has/…
  • 好吧,试试{hasOwnProperty: function(){ return false; }} 和"hasOwnProperty"...

标签: javascript properties lodash


【解决方案1】:

Lodash _.has() 方法只是在检查空参数后调用 Object.prototype.hasOwnProperty()。代码很早就引用了:

var hasOwnProperty = Object.prototype.hasOwnProperty;

然后_.has(object, prop) 看起来像

return object != null && hasOwnProperty.call(object, prop);

【讨论】:

  • 如果您直接传递属性,它期望 prop 为 'prop'。
  • 据称这是更好的做法 b/c 对象的实际 hasOwnProperty 可能会被遮蔽,以及它是空对象的情况 (Object.create(null))。
  • @CraigAllen 但Object.prototype.hasOwnProperty.call(null, prop) 无论如何都会返回false 所以最初的object != null 只是浪费?
  • @Friendly-Robot 避免进行函数调用可能是一种性能问题。
猜你喜欢
  • 2017-08-31
  • 2017-02-19
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2018-03-07
  • 2017-11-05
相关资源
最近更新 更多