【发布时间】:2011-10-24 11:12:05
【问题描述】:
我发现自己将“this”分配给一个变量,这样我就可以轻松地在回调和闭包中使用它。
这是不好的做法吗?有没有更好的方法来引用原始函数?
这是一个典型的例子。
User.prototype.edit = function(req, res) {
var self = this,
db = this.app.db;
db.User.findById('ABCD', function(err, user)) {
// I cannot use this.foo(user)
self.foo(user);
});
};
User.prototype.foo = function(user) {
};
您通常使用这种方法还是找到了更清洁的解决方案?
【问题讨论】:
-
就是这样。
-
像 call()、apply() 甚至 ES5 的 bind() 这样的解决方案怎么样??
-
@Couto、
call和apply仍然需要对this的引用,这会让您回到最初的问题。bind确实是一个很好的解决方案。 -
@davin 你确实是对的,当我写评论时我不记得了。我个人使用 bind()
标签: javascript node.js