auto = option.auto && data; //在这里,如果配置要求记忆最后的参数,则记忆这个参数(非常犀利的用法,直接取了数据)
fired = true;
firingIndex = firingStart || 0;
firingStart = 0;//清空firingStart(不清空下次执行有出问题啦)
firingLength = list.length; //缓存list长度,外界可以访问
firing = true; //正在执行回调函数
for (; firingIndex < firingLength; firingIndex++) {
if (list[firingIndex].apply(data[0], data[1]) === false) {
//注意,如果配置了option.auto(自动执行),并且stack(栈)里存在函数,那么add()代码里有一段对于auto判定会直接执行本方法的代码
//我们要阻止掉那段代码,所以设置auto为false
auto = false;
break;
}//当函数返回false,终止执行后续队列
}
firing = false; //标志状态已经执行完毕回调函数[stack(栈)里面的函数尚未执行] //如果这个栈在没有配置once的情况下肯定是[],所以一定存在
//这里主要作用是,如果没有配置once,则拦截下面的代码,如果配置了once,执行完代码清空数据
if (stack) {










