我们可以使用“.apply”读取传递给回调函数的参数的实时值吗?

Can we read real time value of parameters passed to callback function using “.apply”?

在我的场景中,我有接受一些参数(0 个或更多)的回调函数。我已经声明了一个对象全局变量并将其传递给我的回调函数,稍后在代码的某些部分更改了它的值,但是当我单击 okButton (映射到回调函数)时,函数被调用但参数来了作为未定义的。有人知道这种方法有什么问题吗?

HTML代码:

<button id="bindEvents" onclick="BindEvents()">Bind Events</button>
<button id="okButton">Click Me</button>

部分申请页面:

var tempVariable = {};
function BindEvents() {
    tempVariable.item1 = 100;
    tempVariable.item2 = 200;
    tempVariable.item3 = 300;
    tempVariable.item4 = 400;
    tempVariable.item5 = 500;
}

function callBackFunction(param) {
    var size = Object.keys(param).length;
    if (size > 0) {
        for (var i = 0; i < size; i++) {
            alert((i + 1) + ' parameter value: ' + param[i]);
        }
    }
}

testMe({
    okButtonCallback: callBackFunction,
    okButtonCallbackParameters: tempVariable
});

Dynamic.js

var testMe = function (properties) {
    $(document).ready(function () {
        $(document).on('click', '#okButton', function () {                properties.okButtonCallback.apply(this, properties.okButtonCallbackParameters); 
        });
    });
};

需要进行两项更改才能使其正常工作。

Dynamic.js 根据@Bravo 和@Robin Zigmond 的建议,我将 .apply 替换为 .call。

var testMe = function (properties) {
    $(document).ready(function () {
        $(document).on('click', '#okButton', function () {
            properties.okButtonCallback.call(this, properties.okButtonCallbackParameters);
        });
    });
};

一些应用页面:改变了我读取参数的方式

function callBackFunction(param) {
    var size = Object.keys(param).length;
    if (size > 0) {
        var valuesArray = Object.values(param)
        for (var i = 0; i < size; i++) {
            console.log((i + 1) + ' parameter value: ' + valuesArray[i]);
        }
    }
}