碰上一個奇怪的問題,通過代碼也許最好的解釋:如何從循環中動態地分配方法調用中的參數?
var fruits = ["apples", "oranges", "pears"];
var Breakfast = {
_consume : function (fruit) {
Breakfast[fruit]._numConsumed++;
}
};
for (var f in fruits) {
var fruit = fruits[f];
Breakfast[fruit] = {
consume : function() {
Breakfast._consume(fruit);
},
_numConsumed: 0
}
}
Breakfast.pears.consume();
Breakfast.pears.consume();
Breakfast.apples.consume();
Breakfast.apples.consume();
Breakfast.apples.consume();
console.log("Pears eaten: " + Breakfast.pears._numConsumed);
console.log("Apples eaten: " + Breakfast.apples._numConsumed);
這樣做的結果是:
$ node example.js
Pears eaten: 5
Apples eaten: 0
不太清楚如何克服這種行爲?
我編碼有問題嗎?或者我應該使用不同的模式? (因爲我想要「消費」功能可用於我所有的水果等)
非常感謝!
你'fruit'沒有上鎖,由你來調用'Breakfast.apples.consume()'變量水果設爲'pear'的時間,所以它要求你的通用早餐方法使用梨作爲它更新的水果。 – scragar