class.js
Классическое наследование используя .prototype порой слишком "многословно" и хочется использовать что-то попроще и более схожее с другими языками. Факт остаётся фактом что в JS ECMA 5 до сих пор нету классов (ECMA 6 будет и очень приятные, но этого пока нету), используя .prototype их можно симулировать и больше чем просто классы тоже (но это отдельная тема).
Я использовал MooTools и другие библиотеки для классов, но решил замутить свою, со своими плюшками, как обычно изобретение велосипеда - но опыт хороший. Ссылка: http://goo.gl/tRdo52 Библиотека позволяет создавать классы и наследовать их, также реализовывать prototype и constructor от других классов либо классических prototype'ов. И дополнительно к этому проверять наследует ли экземпляр другой класс (extends), или имплиментирует ли (implements), и является ли класс самого экземляра конкретным классом (typeof). Пример работы: PHP код:
|
Ответ: class.js
Мне вот только интересно. В ActionScript, который тоже основан на ECMA, есть классы. В JavaScript слово class является зарезервированным. Так в чём же дело-то? Запилили бы уже.
|
Ответ: class.js
Запилили в стандарте: http://wiki.ecmascript.org/doku.php?id=harmony:classes
Но стандарт ECMA6 будет закончен к концу 2014 года только. Классы - весьма большая фича и она будет одной из последних реализована в броузерах. Но уже сейчас много чего есть, например FF уже зарелизили Generators (yield) что весьма большая фича и расширяет язык - можно делать свои итераторы, иметь контролируемый async code flow, и многое другое. Вот отличная таблица совместимостей. В последней колонке (Node Harmony) - это если запускать node.js со спец флагом, можно юзать уже. Chrome и Node будут паралельны в этой таблице, т.к. оба используют общий стак технологий для JS. Firefox же радует, что весьма лидирует по имплементации фичей, например arrow functions у FF уже давно. http://kangax.github.io/es5-compat-table/es6/ |
Ответ: class.js
Про harmony знаю, да. Генераторы использовал ради интереса в node-webkit. А про классы почему-то не слышал.
|
Ответ: class.js
Цитата:
|
Ответ: class.js
А я пока наследование не использовал, что-то не было такой надобности.
|
Ответ: class.js
Цитата:
Плюсы в .prototype это когда есть данные, и нужно ими шаблонно оперировать, иметь методы и передавать туда данные и получать результат - это одно. А иметь объект и манипулировать напрямую - красивее тех. дизайн выходит. |
Часовой пояс GMT +4, время: 20:06. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot