我正在努力使用javascript中的this
关键字。我已经阅读了很多文章和答案,但我不明白如何将所有这些知识应用到我的简单代码中。
这是我的“调解员”对象:
function Mediator() {
this.registered = {}
}
Mediator.prototype = {
constructor: Mediator,
register: function (id, e) {
this.registered[id] = e;
e.m = this; //<-- here
},
broadcast: function() {...}
}
但是当我在注册对象中打开时,我会尝试
this.m.broadcast("Connected");
我得到了精彩的Uncaught TypeError: cannot call method broadcast on undefined
。
编辑:
我希望e
对象保留对介体的引用,以便稍后在e
内部使用广播方法。我的问题是e
没有保留我在寄存器方法中设置的引用。
EDIT2:
似乎返回一个匿名对象而不是使用原型来完成工作:
function Mediator() {
var registered = {}
return {
register: function (id, e) {
this.registered[id] = e;
e.m = this; //<-- here
},
broadcast: function() {...}
}
}
这样,将m设置为此工作正常,我可以稍后在其他对象中调用广播。也许这不是纯正的答案,但只要我找不到更好的答案......
答案 0 :(得分:0)
请尝试this.e= m;
或this.m = e;
,不确定您要对此做些什么。
方法被调用如下:broadcast("Connected)
您不需要指定它。或者m。当你打电话给它。希望这有点帮助。