我有这段代码
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,我已经阅读过这种方式可以使用但是我觉得有些问题,因为我仍然无法访问我的回调函数中的数据。 任何帮助将不胜感激
答案 0 :(得分:2)
Function.prototype.bind()
返回 new 函数,其中包含正确的上下文(this
值)和前面提供的参数。
所以你可以将.bind()
行更改为:
transactionCompleteCallback = transactionCompleteCallback.bind(this, amount);
以便将transactionCompleteCallback
函数替换为绑定到this
的正确值的函数,并将amount
值作为第一个参数。
答案 1 :(得分:1)
bind()将创建一个新方法但不修改方法,所以你的第一行应该是
transactionCompleteCallbackImpl = transactionCompleteCallbackImpl.bind(this, amount);
试试吧!