Заметки WEB-разработчика

Полезные материалы для web-разработки

Пару слов о this в javascript

В отличие от многих других языков программирования ключевое слово this в javascript не привязывается к объекту, а зависит от контекста вызова. Для упрощения понимания будем рассматривать примеры применительно к браузеру, где глобальным объектом является window.

Простой вызов функции

function f() {
    console.log(this === window); // true
}
f();

В данном случае this внутри функции f равен глобальному объекту (например, в браузере это window, в Node.js — global). Самовызывающиеся функции (self-invoking) работают по точно такому же принципу.

(function () { console.log(this === window); // true })();

В конструкторе

function f() {
    this.x = 5;
    console.log(this === window); // false
}
var o = new f();
console.log(o.x === 5); // true

При вызове функции с использованием ключевого слова new функция выступает в роли конструктора, и в данном случе this указывает на создаваемый объект.

В методе объекта

var o = {
    f: function() {
        return this;
    }
}
console.log(o.f() === o); // true

Если функция запускается как свойство объекта, то в this будет ссылка на этот объект.

Комментарии

Комментарии через Вконтакте