Изменить: этот вопрос был задан из-за моего недопонимания.Продолжайте с осторожностью, поскольку чтение может потратить ваше время.
Я думал, что call
и apply
выполнят функцию с набором аргументов, но я получаю запутанные результаты теста.Смотрите мой тестовый код:
window.z = 0;
(function(){++(window.z)}).call(this, 1, 2, 3)
Я бы ожидал, что z
будет 3 после выполнения.Однако z равно 1.
(function(){++(window.z)}).apply(this, [1, 2, 3])
То же самое и здесь.z == 1;
Я также попытался записать входной аргумент:
var x = function(y){console.log(y);}
x.call(this, 1, 2, 3);
Результат?Регистрируется только 1.
Что я здесь не так делаю?
(протестировано в Chrome и Firefox с Firebug.)