Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос, наверное, по контекстам (https://javascript.ru/forum/misc/36608-vopros-navernoe-po-kontekstam.html)

_axl 21.03.2013 14:42

Вопрос, наверное, по контекстам
 
Вот пишу такой код:
a = function() {
    this.show = function() {
        alert(222);
    }
    
    return this;
}()

b = function() {
    this.show = function() {
        alert(111);
    }
    
    this.letSee = function() {
        a.show();
    }
    
    return this;
}()

b.letSee();


Вызов b.letSee() дает вызов алерт 111, т.е. ф-ии show() у объекта b, хотя я явно указываю, что нужен объект a. Почему?

danik.js 21.03.2013 14:54

Потеряли ключевое словое new перед вызовами конструкторов. В итоге вы просто исполнили функции, при этом this в обоих случаях указывает на window. То есть вы определили метод window.show - можете это сами проверить.

danik.js 21.03.2013 14:55

Причем return this - необязательно делать, конструктор вернет this и без этого.

_axl 21.03.2013 15:00

Т.е. надо было так:
a = new function() {
b = new function() {

Понятно, спасибо.


Часовой пояс GMT +3, время: 05:38.