Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对这个内部原型函数的引用_Javascript_This - Fatal编程技术网

Javascript 对这个内部原型函数的引用

Javascript 对这个内部原型函数的引用,javascript,this,Javascript,This,我正在努力使用javascript中的这个关键字。我读了很多文章和答案,但我不明白如何将这些知识应用到我的简单代码中 这是我的“中介”对象: 我得到了极好的未捕获类型错误:无法在未定义的上调用方法广播 编辑: 我希望e对象在中介上保留一个引用,以便稍后在e中使用广播方法。我的问题是e没有保留我在register方法中设置的引用 编辑2: 似乎返回匿名对象而不是使用prototype可以完成以下工作: function Mediator() { var registered = {}

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

这是我的“中介”对象:

我得到了极好的
未捕获类型错误:无法在未定义的
上调用方法广播

编辑:

我希望
e
对象在中介上保留一个引用,以便稍后在
e
中使用广播方法。我的问题是
e
没有保留我在register方法中设置的引用

编辑2:

似乎返回匿名对象而不是使用prototype可以完成以下工作:

function Mediator() {
    var registered = {}

    return {
        register: function (id, e) {
                      this.registered[id] = e;
                      e.m = this; //<-- here 
                  },

        broadcast: function() {...}
    }
}
函数中介器(){
注册变量={}
返回{
寄存器:函数(id,e){
此.registed[id]=e;

e、 m=this;//尝试
this.e=m;
this.m=e;
不确定要对此做什么。
方法的调用方式如下:
broadcast(“Connected”)
您在调用它时不需要指定这个.m.。希望这有点帮助。

这是因为您定义了this.broadcast,而不是this.m.broadcast…我在中介中注册的对象中调用broadcast。我的所有对象都有“m”“字段,我正试图指向调解人。如果我的描述不清楚,很抱歉。-请解释问题所在。这对我来说很好:是的,我刚刚测试了它,当所有内容都在同一个页面中时它工作。当我将对象声明放在单独的js文件中并包含它时,它不工作。
this.m.broadcast("Connected");
function Mediator() {
    var registered = {}

    return {
        register: function (id, e) {
                      this.registered[id] = e;
                      e.m = this; //<-- here 
                  },

        broadcast: function() {...}
    }
}