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

如何向函数回调Javascript添加自定义属性,javascript,callback,bind,Javascript,Callback,Bind,我有这个密码 doPurchase = function(amount) { transactionCompleteCallbackImpl.bind(this, amount); iclient.initiatePurchase({ amount: amount, cashout: '0', integratedReceipt: true }, { statusMessageCallback: statusMessageCallbackImpl,

我有这个密码

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);
};
这将首先记录TransactionMount的未定义数据,然后记录原始响应数据

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

返回一个新函数,其中包含正确的上下文(
值)和预先提供的参数

因此,您可能只需将
.bind()
行更改为:

transactionCompleteCallback = transactionCompleteCallback.bind(this, amount);
因此,您可以将
transactionCompleteCallback
函数替换为绑定到
的正确值的函数,并将
金额
值作为第一个参数。

返回具有正确上下文(
值)和预先提供的参数的新函数

因此,您可能只需将
.bind()
行更改为:

transactionCompleteCallback = transactionCompleteCallback.bind(this, amount);
因此,您可以将
transactionCompleteCallback
函数替换为绑定到
的正确值的函数,并将
金额
值作为第一个参数。

返回具有正确上下文(
值)和预先提供的参数的新函数

因此,您可能只需将
.bind()
行更改为:

transactionCompleteCallback = transactionCompleteCallback.bind(this, amount);
因此,您可以将
transactionCompleteCallback
函数替换为绑定到
的正确值的函数,并将
金额
值作为第一个参数。

返回具有正确上下文(
值)和预先提供的参数的新函数

因此,您可能只需将
.bind()
行更改为:

transactionCompleteCallback = transactionCompleteCallback.bind(this, amount);
因此,您可以将
transactionCompleteCallback
函数替换为绑定到
this
的正确值的函数,并将
amount
值作为第一个参数。

bind()将创建一个新方法,但不会修改该方法,因此您的第一行应该是

transactionCompleteCallbackImpl=transactionCompleteCallbackImpl.bind(此,金额)bind()将创建一个新方法,但不会修改该方法,因此第一行应该是

transactionCompleteCallbackImpl=transactionCompleteCallbackImpl.bind(此,金额)bind()将创建一个新方法,但不会修改该方法,因此第一行应该是

transactionCompleteCallbackImpl=transactionCompleteCallbackImpl.bind(此,金额)bind()将创建一个新方法,但不会修改该方法,因此第一行应该是


transactionCompleteCallbackImpl=transactionCompleteCallbackImpl.bind(此,金额)你是否忘记在答案中包含一些代码?你是否忘记在答案中包含一些代码?你是否忘记在答案中包含一些代码?你是否忘记在答案中包含一些代码?忽略最后一个,似乎正在工作!!谢谢你的帮助!不管过去,现在似乎在工作!!谢谢你的帮助!不管过去,现在似乎在工作!!谢谢你的帮助!不管过去,现在似乎在工作!!谢谢你的帮助!谢谢你,格雷格尔!!很抱歉,我将huaogo标记为答案,因为他首先给出了一个更简洁的答案,但是您的答案也非常棒,包含了大量信息(如果函数名上有一个小的拼写错误),谢谢您的帮助:DThanks GregL!!很抱歉,我将huaogo标记为答案,因为他首先给出了一个更简洁的答案,但是您的答案也非常棒,包含了大量信息(如果函数名上有一个小的拼写错误),谢谢您的帮助:DThanks GregL!!很抱歉,我将huaogo标记为答案,因为他首先给出了一个更简洁的答案,但是您的答案也非常棒,包含了大量信息(如果函数名上有一个小的拼写错误),谢谢您的帮助:DThanks GregL!!很抱歉,我将huaogo标记为答案,因为他首先给出了一个更简洁的答案,但是您的答案也非常棒,包含了大量信息(如果函数名上有一个小的拼写错误),谢谢您的帮助:D