Добро пожаловать на Pawno-Info.Ru - Портал о программировании №1

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию своим коллегам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками - то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Модификации SA

Хотите разнообразить свою игру в San Andrease? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием

markelov666

Изучающий
- V I P -
Пользователь
Регистрация
19 Июл 2018
Сообщения
138
Лучшие ответы
3
Реакции
38
Возраст
21
Адрес
Беларусь/Минск
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


Функции в JavaScript выполняются в определенном контексте, и с помощью ключевого слово this мы получаем к нему доступ.

Все стандартные функции браузера выполняются в контексте окна. Функции, определенные в объекте или классе (другой функции), будут использовать контекст объекта, в котором они были созданы. Однако мы также можем изменить контекст функции во время выполнения, либо до, либо во время выполнения функции.​

Привязка метода к объекту

Чтобы привязать функцию к объекту и сделать ее методом объекта, мы можем использовать метод bind.
JavaScript:
let person = {
    name : 'Иван'
};

function printName() {
    console.log(this.name);
}
Очевидно, мы не можем вызвать printName(), не связав функцию с объектом person. Для этого мы должны создать связанный метод функции printName с person, используя следующий код:
JavaScript:
let boundPrintName = printName.bind(person);
boundPrintName(); // Иван

Вызов функции с другим контекстом

Мы можем использовать call и apply функцию для вызова функции, как если бы она была привязана к объекту. Разница между call и apply функциями только тем , как они получают свои аргументы - call функция принимает this аргумент первым, а затем аргументы функции, в то время как apply функция принимает this аргумент первым, и массив аргументов, чтобы перейти к функции как второй аргумент функции.
JavaScript:
printName.call(person); // Иван

call/apply против bind

Разница между call/apply и bind заключается в том, что bind возвращает новую функцию, идентичную старой, за исключением того, что значение this в новой функции теперь является объектом, к которому она была привязана. call/apply вызывает функцию с this привязанным объектом, но она не возвращает возврат новой функции или не изменяет оригинал, а вызывает ее с другим значением для this.
JavaScript:
let boundPrintName = printName.call(person);    // boundPrintName получает возвращаемое значение printName (null)
boundPrintName();                               // не работает, потому что это не функция, это null

printName.bind(person);                         // возвращает новую функцию, но ее никто не использует, поэтому она бесполезна
printName();

Можно сказать что call - это выполнения возвращаемого значение bind

Например:
JavaScript:
printName.call(person);     // это то же самое, что
printName.bind(person)();   // выполняет функцию, возвращаемую bind
Или можно сказать, что bind - возвращает ярлык для call.

Например:
JavaScript:
let boundPrintName = printName.bind(person);
let boundPrintName = function() {
    printName.call(person);
};
 
shape1
shape2
shape3
shape4
shape7
shape8
Сверху Снизу