Показать сообщение отдельно
  #9 (permalink)  
Старый 13.02.2016, 08:24
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Не слушайте предыдущего оратора, от тут в качестве потешного, который тужится всем показать, что он что-то понимает
Лол, ну да, тебе с семнадцатью постами и двумя неделями после регистрации, несомненно, прекрасно известно, кто тут дурачок.

Цитата:
Само сабой, он не в "каждой ф-ции свой", а для каждого вызова свой
Да, так точнее. Контекст функции определяется в момент вызова и зависит от синтаксиса вызова.

При вызове глобальной функции this == window.
"use strict";

function showContext() {
    console.log(this);
}

showContext(); // Window


При вызове замкнутой функции this == undefined (в строгом режиме, разумеется).
"use strict";

(function(callback) {
    function showContext() {
        console.log(this);
    }
    
    showContext(); //undefined
})();


При вызове функции как метода какого-то объекта this равен этому объекта.
"use strict";

(function(callback) {
    function showContext() {
        console.log(this);
    }
    
    var object = {
        method: showContext
    };

    object.method(); //Object { method: showContext() }
})();


Также можно явно указать контекст функции с помощью Function#call, что и происходит в Array#forEach - здесь this резолвится в перебираемый массив.

Последний раз редактировалось Erolast, 13.02.2016 в 08:27.
Ответить с цитированием