我與JS打了一下,有下面的代碼片段javascript如何通過返回方法來簡化這段代碼來執行?
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')
應該調用樹皮方法和invokeOnDog('scared')
應該調用運行
謝謝,我已經編輯了這個問題,並增加了一個案例。 – grafthez
然後,您應該查看[**工廠模式**](http://www.joezimjs.com/javascript/javascript-design-patterns-factory/)。 –