参考这个内部原型函数

时间:2013-05-03 16:47:54

标签: javascript this

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

1 个答案:

答案 0 :(得分:0)

请尝试this.e= m;this.m = e;,不确定您要对此做些什么。 方法被调用如下:broadcast("Connected)您不需要指定它。或者m。当你打电话给它。希望这有点帮助。