【发布时间】:2015-12-04 19:26:58
【问题描述】:
这可能吗?我试图在我的页面加载后覆盖一个 javascript 方法。有问题的代码类似于:
myObject = Backbone.ViewManager.BaseView.extend({
myMethod: function() {
alert("in old method definition");
},
initialize: function() {
var a = this;
Our.Events.on("alertEvent", function(){
a.myMethod();
}
}
);
(Backbone.ViewManager 位只是使用框架在 javascript 中创建对象的一种方式,在这里并不重要。)
注意上面在initialize 方法中定义的事件回调。我们在创建对象后立即对其进行初始化。
加载页面后,我尝试重新定义 myMethod 以提醒不同的消息。但是当alertEvent 触发时,原始消息会出现在警报中。
我认为这是因为闭包,在 myObject 初始化后重新定义方法不会影响 a 指向的定义?如果是这种情况,我可以做些什么来更改a 使用的定义,还是我运气不好?
【问题讨论】:
-
它应该可以工作 - 向我们展示一个复制示例(jsfiddle 链接或堆栈 sn-p)。
标签: javascript callback closures