簡體   English   中英

如何傳遞帶有自定義信息的功能?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM