if (stack.length)//先把下面清空list状态的代码拦截掉,再判定是否有栈
fire(stack.shift()); //从栈头部取出,并递归fire()方法
}
else if (auto) //代码走到这里,证明已经配置了option.once(只执行一次),于是把list清空
list = [];
else //证明没有配置auto,但是配置了once,那么祭出终极大法,直接废了这个callbacks对象
self.disable();
};
var self = {
add: function () {//添加一个回调函数
if (list) {
var start = list.length;
(function addCallback(args) {
each(args, function (item) {
if (isFunction(item)) {//是函数,则压入回调列表
list.push(item);
//注意typeof 和Object.prototype.toString是不一样的
} else if (toString.call(item) === ‘[object Array]’) {//如果是个数组,则递归压入回调列表,这个判定抛弃了array-like










