Всем привет. Разрешите задать нубский вопрос по CALL/APPLY, может кто-то разжуёт Как следует из многих туториалов и учебников call отличается от apply тем, что в apply аргументом можно передать массив. А в call нет.
var object = {
"arr": ["Первый элемент",2,3,4,5],
"func": function() {
function awayFromMe(arr){
console.log(arr);
}
awayFromMe.call (this, this.arr);
awayFromMe.apply(this, this.arr);
}
};
object.func();
То-есть я рассчитывал что call ничего не даст, a apply отработает, но вопреки моим ожиданиям call дал вывод массива:["Первый элемент", 2, 3, 4, 5] apply дал вывод только первого элемента: "Первый элемент"
Почему так происходит?
callвы используете, когда у вас есть все аргументы по отдельности. Когда есть массив неизвестной длины, у вас это не выйдет. Для этого естьapply– vp_arth Feb 17 '17 at 17:54ecmascriptможно развернуть массив в раздельные аргументы:foo.call(null, ...arr1, ...arr2). Функция будет вызвана со всеми элементами обоих массивов. – vp_arth Feb 17 '17 at 17:56}; object.func(); ` И ведь все равно работает ...
– Денис Иванов Feb 17 '17 at 18:11