Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2015, 09:17
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

Функция Class жива!
А между тем победоносная самая лучшая в мире функция Class развилась и перекочевала жить в ui.js ^_^ и теперь называется extend. Вот кстати че она может:

<script src="//uijs.ru/ui.js"></script>


<script>

    // создадим Родителя
    var Animal = ui.extend({

        constructor: function () {
            this.private.name = 'Animal'; // приватное свойство name
        },

        say: function () {
            alert(this.private.name); // 'Animal'
        }

    });


    // создадим Ребенка и наследуем его от родителя
    var Rabbit = Animal.extend(new function () {

        this.constructor = function () {
            this.private.name = 'Rabbit'; // приватное свойство name
            this.super(); // поскольку перекрыли родительский конструктор, вызовем его
        };


        // перекрываем метод say
        this.say = function () {
            this.super(); // 'Animal'
            alert(this.private.name); // 'Rabbit'
            alert(this.static.prop); // 11
        }

    });

  
    Rabbit.prop = 11;  // зададим классу статическое свойство


    var rabbit = new Rabbit();
    rabbit.say(); // запускаем шарманку

</script>



Также наследовать можно от нативных классов:

<script src="//uijs.ru/ui.js"></script>


<script>

    var List = ui.extend(Array, {

        constructor: function () {
            this.name = 'List';
        },


        // перекроем родительский метод
        push: function (item) {
            this.super(item); // вызовем оригинальный метод
            alert(this.name); // ну и добавим доп функционал
        }

    });


    var list = new List();
    list.push('lol'); // 'list'
    list.push('lol'); // 'list'

    alert(list instanceof Array); // true
    alert(list instanceof List); // true

</script>



Ну а с классами кофескрипта она вообще идеально сочитается, она вообще под них и затачивалась потому что я на нем пишу, просто передаешь класс и все и она его понимает).

P.S. и это лишь маааааалая часть моего мегафреймворка, он коненчо крутой и уже лучше ангуляра и такой же быстрый как реакт потому что использует ассинхронный рендеринг, но еще пол годика или годик нужно подождать до статьи на хабре, он сыроват, я хочу туда добавить ТАКИЕ фишки чтобы волосы на жопе дыбом стояли, вроде переводчика и языковых пакетов. и.т.п. и чтобы перевод можно было делать прям в интерфейсе зажав шифт например и тыкнув на элемент.

Последний раз редактировалось UIjs, 24.04.2015 в 09:29.
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2015, 11:01
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Чувак, ты опоздал. Ребята из TC39 уже реализовали классы на уровне синтаксиса)
http://www.2ality.com/2015/02/es6-classes-final.html
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2015, 11:27
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

Erolast, обьяснять? или ты троллишь. ну давай обьясню так и быть. классы существуют уже лет 10 с появлением препроцессеров типа кофескрипта. у меня же есть такая штука как отложеная инициализация. то есть классы опсиываются в любом порядке и при инициализации одного класса засивимости тоже инициализируются. такое не провернуть используя синтаксис. потому что синтаксис требует чтобы выше был обьявлен класс родитель. так же у меня есть приватные и статик свойства. Так же мое работает УЖЕ СЕЙЧАС и прослойка жрет ну максикум 3-5% производительности.


Я уже молчу про то что ни что не мешает использовать и эти классы в фреймворке и делать наследование за рамками фреймворка вручную.

вот как выглядит работа с классами и наследованием контроллеров через кофескрипт


Последний раз редактировалось UIjs, 24.04.2015 в 11:33.
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2015, 11:34
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

UIjs,
Привет максимус!
__________________
Научу себя плохому
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2015, 11:38
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

l-liava-l,
Привет)) Я теперь Иван Вольнов зависаю на страничке Евгения Вольнова. Так и живем
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2015, 12:03
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Ого, какие люди вернулись ЖВ
__________________
kobezzza
code monkey
Ответить с цитированием
  #7 (permalink)  
Старый 24.04.2015, 12:30
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

UIjs,
я думал ты умер. //классическая шутка.
Ответить с цитированием
  #8 (permalink)  
Старый 24.04.2015, 12:40
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от UIjs
языковых пакетов
На это 20 минут нужно, а не год. Архитектура языковых пакетов проста до ужаса, даже в различных вариациях.
Сделай до завтра

Сообщение от UIjs
нативных классов
Хз, я юзаю вот это: https://babeljs.io/docs/learn-es6/#classes , меня устраивает. Хотя мне классы особо и не нужны. Ради интереса сделал класс Ajax, в остальном не знаю куда приткнуть классы. Наверное использование классового подхода сильно зависит от архитектуры.

Сообщение от UIjs
волосы на жопе дыбом стояли
Ну у меня уже встали: watcher, observer, sha512, promise, md5...

Я так понимаю ты пытаешься туда все реализации запихнуть. Люди будут использовать полифиллы + твою реализацию полифилов? Или твою реализацию и если в ней нет нужного полифилла, то + нужный полифилл?

Хз как тебе, но мне проще сделать сборку из нужных полифиллов, в будущем не нужно переучиваться. Иногда ставишь свою обертку, например на localStorage, чтобы работать как с объектом и названия были чистые, а в базе грязные. Вроде норм подход, чем тебе не понравился?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #9 (permalink)  
Старый 24.04.2015, 13:37
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
у меня есть приватные
Инкапсуляция свойств в нэймспэйс еще не делает их приватными.

Цитата:
статик свойства
Ты попутал статик и конст.

Цитата:
мое работает УЖЕ СЕЙЧАС
У меня нативные классы работают уже сейчас уже пол года, как и все прочие фишки ES6. Кури бабель.

Цитата:
у меня же есть такая штука как отложеная инициализация
Зачем?
Ответить с цитированием
  #10 (permalink)  
Старый 24.04.2015, 15:27
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

Сообщение от Gozar
На это 20 минут нужно, а не год.
лол ну во первых это одона ИЗ фитч, а во вторых я имею ввиду это когда ты открывешь сайт на ui и вводишь в консоли ui.translate() и у тебя открывается допустим этот режим, и ты с шифтом зажатым водишь по сайту и тыкаешь на что то и можно редактировать, переведя весь сайт вводишь в консоли ui.getTranslate() и сохраняешь json файлик с языковым пакетом который потом подключаешь куда нужно.

Фишка в том что если там куда ты тыкнул было просто слово то он запомнит перевод и будет вставлять его в это место и все. Если же ты тыкнул в то место которое подставилось из выраженияну типа {{'dd'}} то тогда проблематично, но я наверное на первых парах просто не разрешу словаиз выражений переводить и все. Так же проблема в том чт разметка динамическая и зависит от данных. Все везде репатится отключается подключается. И нужно определить в какое именно место твой перевод, описаный один раз, вставлять. Так что это ООЧЕНЬ сложная задачка месяца на 1-2. ты просто не верно вначале понял о чем я.

Сообщение от Gozar
Наверное использование классового подхода сильно зависит от архитектуры.
У меня оооочень сильно пригождаются классы, например ты описываешь контроллер List который аяксится с сервером и синхронится с таблицой в базе. И далее ты от него наследуешь разные листы типа MessagesList UsersList и.т.п. описав методы синхронизации с базой один раз в List. Так же я например нативные классы кофескрипта (на котором пишу), не исопльзую, потому что они должны быть обьявлены в строгом порядке, друг под другом, а так же потому что у ни нет приватных а у меня есть. при чем синтаксис не сильно отличается, пишу не super() a @super()

Сообщение от Gozar
Я так понимаю ты пытаешься туда все реализации запихнуть. Люди будут использовать полифиллы + твою реализацию полифилов? Или твою реализацию и если в ней нет нужного полифилла, то + нужный полифилл?
я искренне считаю что 100 килобайт на полифилы не стоят экономии. так как на сайте сраные картинки по 200 килобайт идут. 21 век. я пихаю все на все случаи жизни, так как 400-500кб на библиотеку это приемлимо. и я далеко не уперся еще, у меня минифицировная пока весит 40кб.

Сообщение от Gozar
Хз как тебе, но мне проще сделать сборку из нужных полифиллов, в будущем не нужно переучиваться. Иногда ставишь свою обертку, например на localStorage,
Так юзай свою или переопредели контроллер $localstorage

там же все как и в ангуляре удобно оборачивать в контроллеры и компоненты. плагины на jquery можно оборачивать в компоненты (директивы ангуляра) а какие то либы в контроллеры (сервисы в ангуляре)

Сообщение от Gozar
Вроде норм подход, чем тебе не понравился?
Так мой локалсторч так же работает. Я и хочу на все случаи жизни все запилить, чтобы было лучше чем уже есть у старонних. и я не вижу противоречия. ну реализовал я, ну не нравится тебе, ну переопредели ты контроллер этот, у тех у кого он был в засивимостях ВНУТРИ движка он будет старый а у тебя переопределенный тобой с твоими изменениями)

Последний раз редактировалось UIjs, 24.04.2015 в 15:35.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Знаменитая функция Class учавствует в фреймворке ui2/0 __он_самый__ Оффтопик 3 29.12.2014 13:19
Унылого треша тред megaupload Оффтопик 648 17.06.2014 14:31
AJAX функция для новых html-элементов broadcast77 AJAX и COMET 25 03.03.2014 14:01
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Как работает функция Class godofjavascript Оффтопик 58 17.12.2012 09:49