[英]Reference to this inside prototype function
我在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)
您在調用它時不需要指定此名稱或m。希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.