2

我正在努力使用thisjavascript 中的关键字。我已经阅读了很多文章和答案,但我不明白如何将所有这些知识应用到我的简单代码中。

这是我的“调解人”对象:

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 设置为此可以正常工作,以后我可以在其他对象中调用广播。也许这不是纯粹的正确答案,但只要我找不到更好的答案......

4

1 回答 1

0

尝试this.e= m;this.m = e;不确定你想用这个做什么。方法是这样调用的:broadcast("Connected)你不需要指定这个。或米。当你打电话给它时。希望这个对你有帮助。

于 2013-05-03T17:16:27.607 回答