Функция Javascript, вызываемая по вызову и apply, не может обработать параметр - PullRequest
3 голосов
/ 13 октября 2011

Может кто-нибудь объяснить, почему приведенный ниже код возвращает неопределенное значение 2 раза?

    var test = function (theArr) {
        alert(theArr);
    };

    test.call(6);               //Undefined

    var theArgs = new Array();
    theArgs[0] = 6;

    test.apply(theArgs)         //Undefined

1 Ответ

7 голосов
/ 13 октября 2011

Синтаксис метода вызова JavaScript:

fun.call(object, arg1, arg2, ...)

Синтаксис метода применения JavaScript:

fun.apply(object, [argsArray])

Основное отличие состоит в том, что call () принимает список аргументов, а apply () принимает один массив аргументов.

Так что если вы хотите вызвать функцию, которая печатает что-то, и передать область объекта для выполнения в, вы можете сделать:

function printSomething() {
    console.log(this);
}

printSomething.apply(new SomeObject(),[]); // empty arguments array
// OR
printSomething.call(new SomeObject()); // no arguments
...