[英]How can I pass a function with custom information?
我正在使用node.js(socket.io),讓socket.on()為每個加入的客戶端使用唯一的回調函數會很棒。
我目前的做法:
我有一個非常基本的javascript類(包含一個函數和變量):
function MyClass () {
this.theIndex = 7;
this.myFunction= function (){
console.log("theIndex : " + this.theIndex);
};
}
以及它的實例:
var myInstance = new MyClass ();
我的問題是,當我將其作為參數傳遞時,它會記錄“ theIndex:undefined ”。
socket.on('disconnect', myInstance.myFunction);
所以我猜想一旦我傳遞了函數,它將失去對它所在類的引用。
為什么會這樣呢? 如何讓一個函數包含自定義信息?
在javascript中, this
是基於調用上下文定義的。 在您的情況下,您正在傳遞函數,該函數不過是MyClass的屬性。 當功能被執行的this
系統會根據你如何調用它改變了。
如果要保留對類的引用,則使用bind例如socket.on('disconnect', myInstance.myFunction.bind(myInstance));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.