我正在使用一个改编自Backbone的扩展功能(除了一些改变,以符合我雇主的命名惯例),以实现原型继承.在设置了以下结构(下面简化得很简单)之后,我得到了一个无限循环.
Graph = function () {};
Graph.extend = myExtendFunction;
Graph.prototype = {
generateScale: function () {
//do stuff
}
}
// base class defined elsewhere
UsageGraph = Graph.extend({
generateScale: function () {
this.constructor._super.generateScale.call(this); // run the parent's method
//do additional stuff
}
})
ExcessiveUsageGraph = Graph.extend({
// some methods, not including generateScale, which is inherited directly from Usage Graph
})
var EUG = new ExcessiveUsageGraph();
EUG.generateScale(); // infinite loop
Run Code Online (Sandbox Code Playgroud)
循环正在发生,因为ExcessiveUsageGraph上升原型链来UsageGraph运行方法,但this仍然设置为一个实例,ExcessiveUsageGraph当我this.constructor._super用来运行父方法时,它也向上一步到达 …
我知道我可以通过将其作为函数的参数传递来获取事件:
$(".selector").on("click", function(event) {
});
Run Code Online (Sandbox Code Playgroud)
如果它不是函数的参数,我怎么能得到它?
例如,
$(".selector").on("click", function() {
// var event = ???
});
Run Code Online (Sandbox Code Playgroud)