Node.js – 更好的方式来pipe理JavaScript范围之间的callback?

我正在与Node.JS工作,并有两个对象,我通过callback之间移动。 我想出了一个解决scheme来维护范围引用到正确的对象。 我试图找出是否有更好的方法来做到这一点,或者如果这是一个很好的做法。

function Worker () {} Worker.prototype.receiveJob = function(callback, bossReference) { this.doJob(callback, bossReference); }; Worker.prototype.doJob = function(callback, bossReference) { callback.call(bossReference); // callback(); // this will not work }; function Boss () { this.worker = new Worker(); } Boss.prototype.delegateJob = function() { this.worker.receiveJob(this.whenJobCompleted, this); }; Boss.prototype.whenJobCompleted = function() { this.sayGoodJob(); }; Boss.prototype.sayGoodJob = function() { console.log('Good job'); }; var boss = new Boss(); boss.delegateJob(); 

使用Function.prototype.bind()

 function Worker () {} Worker.prototype.receiveJob = function(callback) { this.doJob(callback); }; Worker.prototype.doJob = function(callback) { callback() }; function Boss () { this.worker = new Worker(); } Boss.prototype.delegateJob = function() { this.worker.receiveJob(this.whenJobCompleted.bind(this)); }; Boss.prototype.whenJobCompleted = function() { this.sayGoodJob(); }; Boss.prototype.sayGoodJob = function() { console.log('Good job'); }; var boss = new Boss(); boss.delegateJob(); 

除非在function中需要它,否则你不需要那些愚蠢的bossReference