如何为函数回调添加自定义属性Javascript

时间:2015-05-07 02:29:01

标签: javascript callback bind

我有这段代码

doPurchase = function(amount) {
  transactionCompleteCallbackImpl.bind(this, amount);
  iclient.initiatePurchase({
    amount: amount,
    cashout: '0',
    integratedReceipt: true
  }, {
    statusMessageCallback: statusMessageCallbackImpl,
    questionCallback: questionCallbackImpl,
    receiptCallback: receiptCallbackImpl,
    transactionCompleteCallback: transactionCompleteCallbackImpl
  });
};

我不控制iclient代码,因为它是从外部源加载的,但我希望添加购买金额(莫名其妙地)不包含在transactionCompleteCallback返回的数据中:

transactionCompleteCallbackImpl = function(response, transactionAmount) {
  console.log(transactionAmount);
  return console.log(response);
};

这首先针对transactionAmount首先记录未定义,而将原始响应数据记录为

正如你所看到的,我已经尝试过bind,我已经阅读过这种方式可以使用但是我觉得有些问题,因为我仍然无法访问我的回调函数中的数据。 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

Function.prototype.bind()返回 new 函数,其中包含正确的上下文(this值)和前面提供的参数。

所以你可以将.bind()行更改为:

transactionCompleteCallback = transactionCompleteCallback.bind(this, amount);

以便将transactionCompleteCallback函数替换为绑定到this的正确值的函数,并将amount值作为第一个参数。

答案 1 :(得分:1)

bind()将创建一个新方法但不修改方法,所以你的第一行应该是

transactionCompleteCallbackImpl = transactionCompleteCallbackImpl.bind(this, amount);

试试吧!