Сообщение от melky
|
почему почти везде делают так
|
из-за невозможности использовать свойство prototype получаемого конструктора (точнее его использование становится бесполезным). Это неправильно с точки зрения ООП. По этой причине в ранних версиях PrototypeJs вместо "new Element" было "Element.create" и вместо "new Class" было "Class.create" (там еще есть примеры, например, тот же XMLHttpRequest по-прежнему добывается через "Ajax.getTransport"). Позже в MooTools это решили добавлением специальных методов, которые как бы создают видимость, что все нормально (по факту вручную дописывают методы созданному экземпляру). Еще позже PrototypeJs догнал по элементам и теперь можно писать "new Element", у создаваемых классов тоже появились нужные методы (точнее один:
Class#addMethods), но видимо для совместимости оставили вызов через "Class.create" (или может чего еще не хватило для правильного ООП).