【问题标题】:How does this Javascript one-liner function work?这个 Javascript 单行函数是如何工作的?
【发布时间】:2019-02-27 08:19:16
【问题描述】:
var hasAll = Object.keys(obj1).every(Object.prototype.hasOwnProperty.bind(obj2));

我采取的这段代码来自Best way to Check a JavaScript Object has all the keys of another JavaScript Object的解决方案

【问题讨论】:

  • 你一步一步问函数的逻辑吗?
  • @vahdet 这个实现我理解 var hasAll = Object.keys(obj1).every(key => obj2.hasOwnProperty(key ));但是有问题的那个和这个有什么相似之处?

标签: javascript arrays


【解决方案1】:

它从Object的原型中借用Object#hasOwnProperty,并使用bj2作为this对象绑定(Function#bind)。

结果是一个函数,可以作为回调。

【讨论】:

  • 是不是和这个实现类似 var hasAll = Object.keys(obj1).every(key => obj2.hasOwnProperty.bind(key ));
  • 不行,因为你绑定了key,得到了一个没有用的函数。 bind 返回一个始终真实的函数。所以没有真正的检查发生。
  • 哦,我的错!如果我删除绑定怎么办。那么呢?
  • 那么它应该可以工作,因为你有一个对象obj2 和一个检查函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2016-02-22
相关资源
最近更新 更多