关于'这'在node.js的回调中
Regarding 'this' in callbacks in node.js
可能重复:
JavaScript"this"关键字
我对node.js.中用于EventEmitter
的回调有点困惑
var events = require("events");
function myObject() {
this.name = "Test Object";
this.x = 99;
this.y = 100;
}
myObject.prototype = new events.EventEmitter();
var myobject = new myObject();
myobject.addListener('dbg1', function() {
console.log("this.name = " + this.name); //this.name gives the name not undefined
console.log("myobject.name = " + myobject.name); //so does this
});
myobject.emit('dbg1');
为什么回调中的this
指的是myobject
?回调函数的闭包是这段代码中的全局作用域,对吗?
Scope与确定来自上下文的this
的值无关。这取决于函数的调用方式。您加载的事件模块将在myobject
的上下文中调用它。
相关代码为:
listener.apply(this, args);
apply
方法的第一个参数是用于调用函数(listener
(的上下文。你可以从那里追溯到物体。
这与大多数节点代码库相同。很久以前有一次关于这个的小讨论,大家一致认为.call(this)
需要太多的开销,放在任何地方都很难看/烦人。换句话说,永远不要以为this
就是你所想的。
编辑:无论如何,EventEmitter并没有特别适用于这种情况,我完全误解了你的问题。
相关文章:
- 要求未定义JS回调参数
- 从新的WordPress媒体上传程序获取JS回调
- 重构DRY代码的Node.JS回调
- Material Design Lite所有元素加载JS回调
- 未为路由器应用程序调用Node.Js的回调
- Node.js exec调用从不调用回调
- 在Backbone.js中将回调绑定到此
- YepNopeJS:在小JS文件完全加载之前触发回调
- Node.js使变量等待分配,直到回调函数完成
- js回调到基于生成器的代码
- Node.js,为事件分配回调函数'数据'
- 请求js中的回调问题
- Node.js正确的回调错误句柄
- Flux+React.js-回调操作是好是坏
- 将匿名JS函数作为回调传递
- node.js mongojs findOne回调返回错误为null
- 在 Node.js 中脱离回调函数中的“for”循环
- 在其他回调js中调用回调
- Ember 是否有总是回调.js .then 函数
- 回调JS代码