我正在玩 JS 并且有以下代码片段
var Dog = function(name) {
this.name = name
}
Dog.prototype= {
'bark': function() {
alert(this.name + ' is barking');
},
'run': function() {
alert(this.name + ' is running');
}
}
var dogs = [new Dog('first'), new Dog('second'), new Dog('third')];
function invokeOnDog(what) {
if(what === 'bark') {
for(var i=0; i<dogs.length; i++) {
dogs[i].bark();
}
}
if(what === 'run') {
for(var i=0; i<dogs.length; i++) {
dogs[i].run();
}
}
}
我想做的是简化此invokeOnDog
功能,因为它重复相同的模板两次。我正在考虑以某种方式返回应该在对象上调用的方法,但不知道该怎么做。
你能帮我解决这个问题吗?
编辑:
感谢您的快速回复。如果“what”与调用的方法同名,它们就可以了。但是如果这两者之间没有匹配呢?
invokeOnDog('aggresive')
应该调用 bark 方法并且invokeOnDog('scared')
应该调用 run