this.name无法传递给我的函数事件发射器,不知道吗? 我的代码:
function lightwareTx(name,ip){
this.name = name;
This. IP = IP;
this.connect = function(){
this.client = net.createConnection(10001,this.ip);
this.reconnectSts = true;
this.client.on('connect', function(){
console.log(this.name);
//undefined
}
}
}
答案 0 :(得分:1)
这是因为this
关键字的绑定方式。我强烈建议阅读,例如this article了解这一基本过程的运作方式。在您的情况下,回调中的this
很可能绑定到全局范围(在节点环境中为process
对象,在Web浏览器中为window
,除非您使用strict mode )。
作为快速工作方法,您可以将this
附加到变量,稍后再使用。
function lightwareTx(name,ip){
var self = this;
this.name = name;
This. IP = IP;
this.connect = function(){
this.client = net.createConnection(10001,this.ip);
this.reconnectSts = true;
this.client.on('connect', function(){
console.log(self.name);
//name
});
}
}
答案 1 :(得分:1)
那是因为this
指向另一个上下文。你有两个选择:
var self = this;
添加到connect
函数,然后调用console.log(self.name);
以这种方式使用bind
- 因此您可以更改上下文:
this.client.on('connect', function(){
console.log(this.name);
}.bind(this))