我正在努力使用this
javascript 中的关键字。我已经阅读了很多文章和答案,但我不明白如何将所有这些知识应用到我的简单代码中。
这是我的“调解人”对象:
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
没有保留我在 register 方法中设置的引用。
编辑2:
似乎返回一个匿名对象而不是使用原型可以完成这项工作:
function Mediator() {
var registered = {}
return {
register: function (id, e) {
this.registered[id] = e;
e.m = this; //<-- here
},
broadcast: function() {...}
}
}
这样,将 m 设置为此可以正常工作,以后我可以在其他对象中调用广播。也许这不是纯粹的正确答案,但只要我找不到更好的答案......