Nikulio
@Nikulio
NaN !== NaN

Где можно использовать apply() и call()?

Привет

Я не понимаю, зачем менять контекст использования функции. Вот, есть такой код:

function speak(line) {
    console.log(line);
}

var nik = {
    speak:speak
}

console.log(speak.apply(nik, ["BOOM!"]));


Тут все понятно, в объекте есть метод, который ссылается на функцию. Но что еще можно сделать с
apply, кроме такой игры с метод-функция?
Спасибо
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
Deodatuss
@Deodatuss
Нужно перебрать NodeList как массив?
Array.prototype.forEach.call(document.querySelectorArr('.someClass'),function(elem){..})

Нужно arguments преобразовать в массив?
var argumentsArray = Array.prototype.slice.call(arguments);

Нужно найти самое большое число в массиве?
var arrMax = Math.max.apply(Math, [1,324,235,66,4,32,555]);

Хочешь унаследовать свойства другого конструктора?
function Person(){
  this.name = "Petro";
  this.age = 23;
}
function Worker(){
  Person.call(this);
}
var worker = new Worker();
alert(worker.name);// Petro


Короче чтобы использовать функции других обьектов в своем контексте без заморочек с наследованием.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Есть очень много моментов когда просто теряется контекст, например setTimeout и setInterval.
Когда делаешь обертку функции и надо передать ей обратно ее аргументы.
И много другого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
20 янв. 2021, в 14:15
1500 руб./за проект
20 янв. 2021, в 14:10
2000 руб./за проект
20 янв. 2021, в 13:55
10000 руб./за проект