2
我在node.js中運行這個。爲什麼以下代碼段會丟失cb
var的作用域?爲什麼這個javascript函數失去閉包範圍?
Client.prototype.post = function(path, data, callback) {
var self = this;
var cb = callback;
return function() {
console.log(path);
console.log(cb);
rest.post(self.baseUrl + path, data).on('complete', cb || this.callback);
}
};
這個函數的調用看起來像這樣client.post('/user', {}, function() {});
和輸出以下:
/user
undefined
我期待第二行是[Function]
可能正在使用或者JS的.call()
或執行時,返回功能.apply()
方法來改變它運行在範圍之內。不過,我倒覺得cb
將訪問就像path
是。
更新:結束語回調函數中也可以正常工作。但是我仍然想解釋一下這裏發生的事情。
var cb = function() { callback(); };
'call' /'apply'更改上下文,而不是範圍。你說的事情不應該發生,你能鏈接到實際的代碼? – david 2011-12-20 20:01:42
工作對我來說:http://jsfiddle.net/Squeegy/Uf9nD/你的問題可能出在其它地方... – 2011-12-20 20:03:25
https://gist.github.com/1503056線33-41。該文件用作使用vowsjs – 2011-12-20 20:09:52