私は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
関数を単純化して、同じテンプレートを 2 回繰り返すことです。オブジェクトで呼び出す必要があるメソッドを何らかの方法で返すことを考えていますが、その方法がわかりません。
それを手伝ってくれませんか?
編集:
素早い回答ありがとうございます。「what」が呼び出すメソッドと同じ名前であれば問題ありません。しかし、これらの 2 つが一致しない場合はどうなるでしょうか。
invokeOnDog('aggresive')
bark メソッドをinvokeOnDog('scared')
呼び出し、run を呼び出す必要があります