Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.09.2011, 07:56
Интересующийся
Отправить личное сообщение для Greck Посмотреть профиль Найти все сообщения от Greck
 
Регистрация: 27.07.2011
Сообщений: 27

Обращение к более глобальному this
Я в JS новичок, подскажите как сделать красивей.

Есть объект, в нем есть функции, которые к ходе выполнения создают функции других объектов. Как обращаться к методам и свойствам моего базового объекта из создаваемых функций?

В примере это this.container и this.editColumnsList().

Сейчас я сделал через переменные-ссылки, но как-то некрасиво, по-моему, и я не уверен, что это всегда будет работать как задано. Нагуглить - проблема, я не знаю как это правильно назвать.

Можно ли это сделать стандартными средствами языка или более красивым способом?

var richGrid = {
    container: 'div#grid',

    create: function() {
        var container = this.container;
        $(this.container + ' div.editcolumslist').click(function(e) {
            $(container + ' div.editcolumslist div.popupwnd').togglePopup();
            e.stopPropagation();
        });

        var editColumnsList = function() { this.editColumnsList() };
        $(this.container + 'div.editcolumslist div.popupwnd input').change(function() {
	        editColumnsList();
        });
    },

    editColumnsList: function() { }
};

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2011, 08:20
Интересующийся
Отправить личное сообщение для Greck Посмотреть профиль Найти все сообщения от Greck
 
Регистрация: 27.07.2011
Сообщений: 27

Теперь создаю ссылку на весь объект:

var richGrid = {
    container: 'div#grid',

    create: function() {
        var grid = this;
        $(this.container + ' div.editcolumslist').click(function(e) {
            $(grid.container + ' div.editcolumslist div.popupwnd').togglePopup();
            e.stopPropagation();
        });

        $(this.container + 'div.editcolumslist div.popupwnd input').change(function() {
	        grid.editColumnsList();
        });
    },

    editColumnsList: function() { }
};


Так правильно?
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2011, 11:06
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

var richGrid = {
    container: 'div#grid',

    create: function() {
        var grid = this;
        $(this.container + ' div.editcolumslist').click($.proxy(function(e) {
            $(this.container + ' div.editcolumslist div.popupwnd').togglePopup();
            e.stopPropagation();
        }, this));

        $(this.container + 'div.editcolumslist div.popupwnd input').change($.proxy(this.editColumnsList, this));
    },

    editColumnsList: function() { }
};
Ответить с цитированием
  #4 (permalink)  
Старый 23.09.2011, 17:28
Интересующийся
Отправить личное сообщение для Greck Посмотреть профиль Найти все сообщения от Greck
 
Регистрация: 27.07.2011
Сообщений: 27

Понял, спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к объекту через ссылку boro-da jQuery 4 08.08.2011 15:48
Обращение к элементам другого окна john1123 Events/DOM/Window 2 21.07.2011 18:06
сделать более универсальным ajax-вывод LRCenter AJAX и COMET 15 06.11.2010 08:20
$(this) обращение к выборкам цикла jei jQuery 1 16.09.2009 14:44
Обращение к элементам сайта Воитель Элементы интерфейса 6 20.08.2009 11:26