我在我的Javascript代碼中使用這個基本事件系統,並且正在嘗試爲我的同事記錄它。我不確定這段代碼中的「範圍」和「上下文」有什麼區別。任何人都可以幫助我理解爲什麼我甚至需要它們兩個?在此Javascript代碼中的「範圍」和「上下文」中有所不同
this.myClass.prototype.on = function (type, method, scope, context) {
var listeners, handlers, scope;
if (!(listeners = this.listeners)) {
listeners = this.listeners = {};
}
if (!(handlers = listeners[type])) {
handlers = listeners[type] = [];
}
scope = (scope ? scope : window);
handlers.push({
method: method,
scope: scope,
context: (context ? context : scope)
});
}
this.myClass.prototype.trigger = function(type, data, context) {
var listeners, handlers, i, n, handler, scope;
if (!(listeners = this.listeners)) {
return;
}
if (!(handlers = listeners[type])){
return;
}
for (i = 0, n = handlers.length; i < n; i++){
handler = handlers[i];
if (context && context !== handler.context) continue;
if (handler.method.call(
handler.scope, this, type, data
)===false) {
return false;
}
}
return true;
}
所以基本上,範圍是沒有意義的,就像我想的那樣。我希望我能記住我在哪裏找到這個代碼。 –
對於ES6中的'let'和'const',現在有一個塊範圍很好。有人請糾正我,如果我錯了。 – khizar