#javascript #yui3
#javascript #yui3
Вопрос:
Я пишу веб-приложение, которое использует YUI3 для всех своих JS-потребностей. Мне нужна функциональность, такая как всплывающие подсказки, содержимое которых определяется AJAX-запросами, кнопками переключения и так далее.
Я не был уверен, кому создавать архитектуру для достижения всего этого. Я выбрал следующий подход
var Myapp = function(){
this.toggleButton(node,config)
{
YUI().use(....,function(Y){
//code to convert NODE into a toggle button;
});
}
return this;
};
Затем в моем приложении я просто конвертирую все кнопки в кнопки переключения, вызывая
var app = Myapp();
app.toggleButton(Y.all('.toggle-buttons'),{'text1':'TOGGLE_ME','text2':'TOGGLED_ME'});
Все это работает. Но я хотел узнать у более опытных разработчиков, есть ли что-то принципиально неправильное в этом подходе.
Это хороший способ использовать JavaScript?
Ответ №1:
return this;
В этом нет необходимости, поскольку конструкторы функций возвращают this
по умолчанию.
var app = Myapp();
Вы забыли вызвать объект window new Myapp()
без new
ключевого слова this
, и вы фактически выполняете запись в глобальную область.
Ответ №2:
В вашем коде есть фундаментальная проблема:
var MyApp = function(){
this.toggleButton(node,config)
{
...
Вы не определяете функцию для MyApp
. Вместо этого вы пытаетесь вызвать ToggleButton при каждом создании его экземпляра. Это должно завершиться неудачей, потому что функция не определена
В вашем случае определение класса и создание экземпляра не требуется, потому что MyApp
используется как утилита.
Вы можете определить MyApp
как статический объект:
var MyApp = {
toggleButton: function toggleButton() {
// your code
}
};
И вы можете использовать его где угодно с помощью:
MyApp.toggleButton();