我正在阅读开发 Backbone.js 应用程序。
once()
有一个我不明白的方法示例。这是jsfiddle。运行它并查看控制台日志。看到它打印了两个true
s。
var TodoCounter = { counterA: 0, counterB: 0 };
_.extend(TodoCounter, Backbone.Events);
// Increment counterA, triggering an event
var incrA = function(){
TodoCounter.counterA += 1;
TodoCounter.trigger('event'); // ??? What is this for?
};
// Increment counterB
var incrB = function(){
TodoCounter.counterB += 1;
};
// Use once rather than having to explicitly unbind
// our event listener
TodoCounter.once('event', incrA);
TodoCounter.once('event', incrB);
// Trigger the event once again
TodoCounter.trigger('event');
// Check out output
console.log(TodoCounter.counterA === 1); // true
console.log(TodoCounter.counterB === 1); // true
TodoCounter.trigger('event')
在做incrA()
什么?我删除了它,它似乎没有任何区别。
这本书说它只应该为 A 和 B 增加一次。我想我理解除了TodoCounter.trigger('event')
.incrA()