在数组中的每个对象上调用实例函数
Calling instance function on each object in array
我有一个包含实例方法的对象数组。我可以遍历每个对象并像这样专门调用它:
items.forEach(function(i) { i.show(false) });
但是我希望像下面这样不那么冗长的版本,这是行不通的。
items.forEach.show(false);
甚至
items.show(false);
有没有更清洁的方法?
1) 最短的方法是使用 ES 6 箭头函数:
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);
相关文章:
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 在Javascript中对类的每个实例调用一个方法
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 从实例方法调用实例方法
- 概念验证模型控制器调用正确的实例
- 调用函数和创建函数实例之间的Javascript差异
- 向模板实例变量传递调用方法调用的结果时出现异常
- 如何理解“当类实例化时,JavaScript静态方法也是不可调用的”
- 如果多次调用同一函数,如何停止该函数的先前实例
- 我应该在原型上还是在新创建的实例上调用构造函数方法
- 调用Class.prototype=new MyClass()是否确保每次都重新实例化超类
- 调用Javascript中实例的函数
- 在数组中的每个对象上调用实例函数
- 如何根据所选选项调用实例方法
- 如何在匿名函数中调用实例方法
- 如何在javascript中调用实例化类的函数
- 是否可以在 javascript 中的私有函数中调用实例变量
- 不能在java/coffeescript中调用实例方法
- Angularjs用不同的url调用实例化的资源方法
- 使用jQuery时可以调用实例函数吗?