Обращение к более глобальному 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() { } }; Спасибо. |
Теперь создаю ссылку на весь объект:
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() { } }; Так правильно? |
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() { } }; |
Понял, спасибо.
|
Часовой пояс GMT +3, время: 18:44. |