fired: function () {//这个callbacks是否执行过
return !!fired;
}
};
};
//注册到window下
window.Callbacks = Callbacks;
}(window));
然后我们测试一下这个Callbacks:
var test = new Callbacks();
test.add(function (value) {
console.log(‘函数1,value是:’ + value);
});
test.add(function (value) {
console.log(‘函数2,value是:’ + value);
});
test.fire(‘这是函数1和函数2的值’);
console.log(‘查看函数是否执行过:’ + test.fired());
test.disable();//废弃这个Callbacks
console.log(‘查看函数是否被废弃:’ + test.disabled());
test.add(function () {
console.log(‘添加第三个函数,这个函数不应该被执行’);
});
test.fire();
打开浏览器的控制台我们可以看见运行结果正常。
once和auto(memory)实现
once:
once让这个callbacks中的函数运行一次之后就不再运行。原理非常的简单,上面的代码中,我们可以看见有一个变量list承接函数列表,所以我们只需要把过去执行过的代码清空即可。我们用一个全局变量,保存当前执行模型,如果是once模型,就在fireWith()里让这个list失效即可:
(function (window, undefined) {
var Callbacks = function (once) {
//通过闭包保护这些私有变量










