Перш за все, слід зазначити, що сенс цього не можна визначити, коли функція визначена, лише коли функція виконується, можна визначити, на кого вона вказує, насправді останнім пунктом є об'єкт, який її викликає (з цим реченням є певні проблеми, і пізніше пояснимо, чому виникає, хоча більшість статей в Інтернеті так стверджують, хоча в багатьох випадках це розуміння не виникне, але насправді це розуміння є неточним, Тож коли ви це зрозумієте, у вас виникне відчуття нерозуміння), тому я розгляну це питання детальніше.
Тест виглядає так:
Вона має різні значення для різних функцій. Загалом, це об'єкт середовища, у якому виконується функція. Використання цього питання детально розглядається у чотирьох ситуаціях.
Випадок 1: Чисті виклики функцій
Це найпоширеніше використання функції, і це глобальний виклик, тобто він представляє глобальний об'єкт. Подивіться на код нижче, він працює з результатом 1.
Випадок 2: Метод виклику як об'єкта
Функцію також можна викликати як метод об'єкта, у такому разі це стосується батьківського об'єкта.
Випадок 3 Виклик як конструктор
Так званий конструктор через цю функцію може бути згенерований новий об'єкт. На цьому етапі йдеться про новий об'єкт.
Результат цього проходження — 1. Щоб показати, що це не глобальний об'єкт на даний момент, ми вносимо деякі зміни до коду:
Результат пробігу — 2, що вказує на те, що значення глобальної змінної x взагалі не змінилося.
Випадок 4 — подати заявку
apply() — це метод функції, який змінює об'єкт, що викликає функцію. Його перший параметр представляє змінений об'єкт, який викликає функцію. Отже, це стосується цього першого параметра.
Коли параметр apply() порожній, за замовчуванням викликається глобальний об'єкт. Отже, результат пробігу дорівнює 0, що доводить, що це стосується глобального об'єкта.
Якщо змінити останній рядок коду на
Поточний результат стає 1, доводячи, що це об'єкт obj.
(Кінець)
Посилання:
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
|