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

Javascript 如何重写它以包含调试语句?,javascript,Javascript,以前我有这个 onSuccess: this.receiveRequest.bind(this, callback) 这将返回一个函数,其中接收请求的This绑定到提供的This绑定-这与包含receiveRequest方法的函数相同 所以我试着重写了 onSuccess : function () { console.log({'XXX: onSuccess': this}); return this.receiveR

以前我有这个

onSuccess: this.receiveRequest.bind(this, callback)
这将返回一个函数,其中接收请求的This绑定到提供的This绑定-这与包含receiveRequest方法的函数相同

所以我试着重写了

onSuccess   : function () {                      
  console.log({'XXX: onSuccess': this});         
  return this.receiveRequest.call(this, callback)
}.bind(this),        
但是这不起作用。。为什么?有什么想法吗?

当您在onSuccess函数中使用.bindthis时,它会使该窗口或全局对象的上下文成为窗口或全局对象-请尝试将其删除。在这里抛出调试逻辑应该很简单,但是考虑到上下文的绑定和显式声明,您可能会也可能不会尝试实现与此更相似的功能

// ...

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();

你说的“不工作”是什么意思?你试过将回调传递到函数中吗?@superalStreams like.bindthis,callback?我也这么想。