Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   покритикуйте подход пожалуйста (https://javascript.ru/forum/misc/16224-pokritikujjte-podkhod-pozhalujjsta.html)

igrok 30.03.2011 16:01

покритикуйте подход пожалуйста
 
Здравствуйте, пишу собственную UI библиотеку, она будет немного отличаться от существующих на данный момент. Прошу покритиковать метод создания объекта и работы с ним. Вот простейший пример:

function MySquare(id, name){
    this.prop1=name;

    this.showName=function(){
        alert(this.prop1);
    };

    $("<div id='" +id+ "' style='width: 50px; height: 50px;' class='MySquare'></div>").appendTo($("body"));
}
$(".MySquare").live("click", function(){
   var obj=getObjById($(this).attr("id"));

   obj.showName(); 
});

Skipp 30.03.2011 16:24

Что вы этим хотели сделать?
Не впечатляет, не капли.
И что за getObjById?
хех и ещё по ржал, спасибо)
Интересно почему практически все по началу думают, что надо работать с элементами только по их id и что без них никуда, что это центр вселенной и ппц.

igrok 30.03.2011 17:06

Спасибо за ответ,
этим я "абстрактно" создал квадрат, к которому могу обращаться как к объекту, не напрямую к тэгу, а к объекту, методы которого будут изменять тэг.
Метод getObjById просто взял с потолка, грубо говоря он будет по ID возвращать объект (тот самый о котором я написал выше).
То что поржали - всегда пожалуйста :)
По поводу обращения к элементам по ID, и что это центр вселенной...на самом деле это холиварный вопрос, у каждого свое мнение на него своё, можно долго спорить что использовать, приводя в доводы скорость доступа и влияние на "рендер" страницы. Та библиотека которую я пытаюсь сделать будет предназначена исключительно для создания приложений, а не для обычного веба, а раз так то на любой форме приложения желательно однозначно идентифицировать объекты, тот пример что я привел он очень абстрактный, к примеру я сделал таблицу у которой будет всего один ID но её код занимает 2000 строк кода на javascripte, и это при использовании jquery.

Если у кого еще есть критика не стесняйтесь :) а то опыта пока маловато, накосячу щас, потом разгребать будет сложнее.

Всем спасибо

Skipp 30.03.2011 17:14

а почему так?
$(".MySquare").live("click", function(){
	   var obj=getObjById($(this).attr("id"));	 
   obj.showName();
});

так не работает?
$(".MySquare").live("click", function(){this.showName()});


Цитата:

не напрямую к тэгу, а к объекту
И вот это я не понял:)

И зачем метод getObjById, если $("#...") шустрее?

igrok 30.03.2011 17:19

на этот вопрос будет проще ответить кодом :)

//изменим немного
function MyButton(id, text){
    this.click=function(){
    };
 
    $("<div id='" +id+ "' style='width: 50px; height: 50px;' class='MyButton'></div>").appendTo($("body"));
}
$(".MyButton").live("click", function(){
   var obj=getObjById($(this).attr("id"));
 
   obj.click();
});


//а теперь мы можем создать две кнопки без работы вручную с ДОМ, работая только с объектами
var btn1 = new MyButton("btn1", "Button1");
var btn2 = new MyButton("btn2", "Button2");

btn1.click=function(){
 alert("btn1");
};

btn2.click=function(){
 alert("btn2");
};


я просто хочу что пользователи библиотеки поменьше напрямую работали с ДОМ, в идеале им это вообще не должно быть нужно

Skipp 30.03.2011 17:22

ладно, вы пока наверно не поймёте к чему я, с опытом придёт)))


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