如何重写它以包含调试语句?

时间:2015-07-07 20:54:20

标签: javascript

以前我有这个。

onSuccess: this.receiveRequest.bind(this, callback)

这将返回一个函数,其接收请求绑定到提供给绑定的绑定 - 这与包含this方法的receiveRequest相同。

所以我尝试重写那个..

onSuccess   : function () {                      
  console.log({'XXX: onSuccess': this});         
  return this.receiveRequest.call(this, callback)
}.bind(this),        

然而这不起作用..为什么?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

.bind(this)函数上使用onSuccess时,它会使this window或全局对象的上下文 - 尝试删除它。在那里抛出调试逻辑应该是微不足道的,但是考虑到上下文的绑定和显式声明,看起来你可能会或者可能不会尝试实现与此类似的东西......

// ...

receiveRequest: function(callback) {
  console.log('received');
  callback();
},
onSuccess: function (cb) {                      
  console.log({'XXX: onSuccess': this});         
  return this.receiveRequest.bind(this, cb)
}

// ...

var requestReceivedFunc = myObj.onSuccess(function() {
   console.log('my callback'); 
});
requestReceivedFunc();