我有一个包含实例方法的对象数组。我可以迭代每个对象,并特别调用它:
items.forEach(function(i) { i.show(false) });
但是我希望有一个不那么详细的版本,如下所示,这不起作用。
items.forEach.show(false);
甚至
items.show(false);
有更清洁的方法吗?
答案 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);