在数组中的每个对象上调用实例函数

时间:2016-03-22 07:55:08

标签: javascript object foreach

我有一个包含实例方法的对象数组。我可以迭代每个对象,并特别调用它:

items.forEach(function(i) { i.show(false) });

但是我希望有一个不那么详细的版本,如下所示,这不起作用。

items.forEach.show(false);

甚至

items.show(false);

有更清洁的方法吗?

1 个答案:

答案 0 :(得分:2)

1)最短的方法是使用ES 6 arrow functions

items.forEach(i => i.show(false));

2)使用帮助函数:

function iterator(i) { 
  i.show(false) 
}

items.forEach(iterator);

3)定义一个生成器:

function gen() {
   var funcName = arguments[0],
     params = Array.prototype.slice.call(arguments, 1);
   return function(item) {
      item[funcName].apply(item, params);
   };
}

items.forEach(gen('show', false));     // -> i.show(false);
items.forEach(gen('show', true));      // -> i.show(true);
items.forEach(gen('delete', 1, true)); // -> i.delete(1, true);