#framework #javascript
Доброго времени суток. Задался я целью на работе - избежать использования такого фрэймворка как QOOXDOO. Он, конечно, классный и прикольный, но, к сожалению, и питон нужен для компиляции кода (да-да, чтобы собрать воедино код, нужен Питон), а еще он весит 100500 метров. В общем, старался обойти без потерь для текущего проекта. Получилось вроде бы. Из возможностей: Возможность создания класса и его экземпляров. Текущие типы классов, возможные для создания - динамический, синглтон. Возможность "подмешивания" методов сторонних классов (МИКС). чОткое наследование Автоматическое создание Геттеров, сеттеров и листинга и контроля типов для публичный переменных. Возможность создания статических методов вне статических классов. оооооОоОооочень маленький. Текущие недоработки (будут исправлены в течении пары дней...когда высплюсь): Нет возможности наследования синглтона. (функции написаны, но начинку не пихал. Там все просто) Пример простейшего класса: // Mixin class smc.define("MTest", { // Static methds & properties static: { base: 0x100, unit: 0x200, resouce: 0x300 } }); // Mixin class smc.define("MTest2", { // Static methds & properties static: { moto: 0x100, auto: 0x200, velo: 0x300 } }); smc.define("MyFirstClass", { /* * Конструктор. Вызывается при создании нового экземпляра класса. */ construct: function (a,b) { if(a) this.setName(a); if(b) this.setMessage(b); this.helloWorld(); }, /* * Это примесь. Вы можете создать массив и указать SMC классы, * чьи свойства необходимо подмешать в текущий объект класса. * Если такие классы есть - Вы сможете вызвать их методы, из текущего экземпляра, * либо обратится к их переменным */ mixins: [ smc.MTest, smc.MTest2 ], /* * Это паблик- переменные класса. * value: Значение переменной * type: тип переменной (дефолт- любой) * event: Если при изменении значения переменной необходимо вызвать какую-либо функцию, */ properties: { name: { value: "Станислав", type: "string" }, message: { value: "Привет", type: "string", apply: "this.helloWorld" } }, /* * Список паблик функций, либо переменных * (как правило, сюда забрасываются переменные, которые не нуждаются в паблик доступе) */ members: { helloWorld: function () { alert( this.getMesage() + ", " + this.getName()); } }, static: { whatAreFuck: function () { console.log("Это простой статический метод у динамического объекта. Может вызываться без создания экземпляра класса") } } }); Скачать его можно пройдя по этой ссылке :) http://download.tracking.by/smc.js
Ответы
Ответ 1
:) ЗАчетно, действительно, ничего тяжелого :) Но есть и нюансы. 1. Сразу бросилось в глаза с примером создания Юзера и Админа. Практически копипаст содержания одного объекта и второго. Думаю, никто не возразит, если я скажу, что это немного некрасиво :) Ну да ладно, тут дело вкуса, не имею права ничего говорить :) Вот, хотел обратить внимание на фразу : " сеттеры, геттеры и т.д и т.п. не стал т.к. не считаю целесообразным ( надо будет - можно написать "класс" с этим функционалом от которого, потом, расширять все )." Не стоит расширять функционал за счет таковых лесапедов :) Тут фишка в чем. Почему я задался вопросом о реализации сеттеров и геттеров - очевидно. Можно запросто контролировать типы переменных (а порой это очень важно) Не придется писать к каждому геттеру и сеттеру функции всякие познавательные :) Как говориццо "Все уже сделано до нас:)" ... да и размер кода существенно уменьшается. :) У меня просто позиция такая - чем больше сделаешь сейчас - тем меньше потом делать всего :)Ответ 2
И что, вот так можно вызвать функцию? MyFirstClass::whatAreFuck(); А вообще круто.
Комментариев нет:
Отправить комментарий