我正在用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
不会保留我在register方法中设置的引用。编辑2:
似乎返回一个匿名对象而不是使用原型可以完成此工作:
function Mediator() {
var registered = {}
return {
register: function (id, e) {
this.registered[id] = e;
e.m = this; //<-- here
},
broadcast: function() {...}
}
}
这样,将m设置为此可以正常工作,以后我可以在其他对象中调用广播。也许这不是纯粹的正确答案,但只要我找不到更好的答案...
最佳答案
尝试this.e= m;
或this.m = e;
不确定要执行的操作。
方法的调用方式如下:broadcast("Connected)
您无需指定此方法。或米当您调用它时。希望这个对你有帮助。