На данный вопрос уже ответили:
Вызов func.call(context, a,b...)
– то же, что обычный вызов func(a, b...)
, но с явно указанным this(=context);
Метод apply работает так же как и метод call, с той разницей, что в него мы передаем не контекст + строковые аргументы, а контекст + массив
Я попробовал создать пример, который бы объяснил мне работу функции apply
var playList = {
title: "favorite songs"
}
var songs = [];
function makePlayList() {
console.log(this.title+":");
for (var i = 0; i < songs.length; i++) {
console.log((i+1)+": "+songs[i]);
}
}
songs.push("Muse - Resistance");
songs.push("Tame Impala - Let It Happen");
songs.push("MGMT – Alien Days");
makePlayList.apply(playList,songs);
Но затем я попробовал строку
makePlayList.apply(playList,songs);
И понял, что я не понял в чем же суть метода apply, помогите пожалуйста разъясните ситуацию на моем примере
Приветствую
someFunc.apply(ctx, [arg1, arg2, arg3]);
someFunc.call(ctx, arg1, arg2, arg3);
Вот и всё разница :)
В вашем примере ни call ни apply не нужны, так как ни аргументов у функции нет, ни контекст не используется. С приходом es6, манипуляции с this по большей части закончены.
В es6 массив в качестве аргументов можно передать через деструкцию:
const args = [arg1, arg2, arg3];
someFunc(...args);
// = someFunc(arg1, arg2, arg3)
Также внутри функции, у которой есть контекст, всегда можно выяснить аргументы запросив arguments
(даже если у функции явно аргументы не указаны)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть проект и в нём куча подключённых библиотек, например lodashИз этой библиотеки я использую пока только одну функцию _
Здравствуйте, кто нибудь работал с плагином TreantJS? Как в настройках плагина указать местоположения пользователя в дереве?
Доброго времени суток! Есть один вопрос к знатакамСделал я фиксированое меню с якорями, но есть проблема: Когда я скролю вниз, у меня к прозрачному...