Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Функция Class жива! (https://javascript.ru/forum/offtopic/55353-funkciya-class-zhiva.html)

UIjs 05.05.2015 15:08

писать фильтры на кофескрипте одно удовольствие, и ни какой ES6 не сравнится)




UIjs 10.05.2015 19:27

круто придумал))

вешается на Class.prorotype.parent геттер и когда запрашиваем это свойство то нам известно this из которого запрашивается это свойство, дальше мы запоминаем этот this. а в parent лежат функции обертки которые вызывают оригинальные родительские методы в контексте этого запомннеого текущего this который где то там хранится. и все)

таким образом получаем



Так же можжно кэшировать один раз запрошеную функцию), круто я придумал, kobezzza? так мы сможем хоть протектед сделать)

UIjs 10.05.2015 19:33

кроме того eval сохраняет замыкание, по этому если запретить в обьявлении класса использовать замыкания во вне (а у меня это и так запрещено потому что все зависимости надо подключать как в ангуляре через параметры к функции), то тогда мы смоежм проивалить код функции описывающей класс и засунуть в её замыкание ссылки на свойства super parent и все такое

w = (function(){
    var qq = 11;
    return eval("(function(){ alert(qq) })")
})();


w()


поскольку обьявление класса не горячий кусок кода, так как классов будет не больше тысячи, а для яваскрипта сделать 1000 ивалов - ничто. то с быстротой тут проблема не стоит. единственное что так это нужно избежатьп аркинга кода класса. нужно использовать максимально нативные механизмы.


дальше встает проблема как передавать контекст this в те функции, которые мы запрашвиаем через parent и super


я просто думаю как сделать чтобы можно было писать не this.parent а просто parent, а дальше работала магия


можно например методы класса обернуть во врапперы, которые будут текущий this складывать в определенное место к которому parent будет иметь доступ. но опять же, врапперы. долго. нужно что то хитрее) помогай!

kobezzza 10.05.2015 20:09

Цитата:

круто я придумал, kobezzza?
Да, прикольно, я об этом не подумал.

Цитата:

кроме того eval сохраняет замыкание
С eval отладчики с ума сходят, тогда уж генерь Blob и подключай его как скрипт.

Цитата:

(а у меня это и так запрещено потому что все зависимости надо подключать как в ангуляре через параметры к функции)
Это очень плохой подход, люто бесит ангуляр за это. Проще использовать Java like подход - 1 класс = 1 файл, а зависимости подключать через нормальные модули ES6 или другого языка.

Цитата:

то тогда мы смоежм проивалить код функции описывающей класс и засунуть в её замыкание ссылки на свойства super parent и все такое
Да, но не будет нормальной поддержки IDE и программ стат анализа. Да и уж если на то пошло, то тогда лучше вообще отказаться от рантайм логики, а использовать подход макросов, аля http://sweetjs.org/

Т.е. почему бы тебе вместо того, чтобы плясать в рантайме и делать магию, а просто сделать надмножество над самим языком (как например Iced Coffee Script сделан над Coffee Script).

UIjs 10.05.2015 20:11

Цитата:

Сообщение от kobezzza
нормальные модули ES6

я уже подумал и понял что все это фигня, я же новый фреймворк решил писать Mega.js ну вот буду писать его на ES6 куда деваться. будут активно исползоваться сеттеры и геттеры. И все такое прочее.


добавлю таким же способом приватные в классы ES6


Цитата:

Сообщение от kobezzza
Т.е. почему бы тебе вместо того, чтобы плясать в рантайме и делать магию, а просто сделать надмножество над самим языком (как например Iced Coffee Script сделан над Coffee Script).

это самый очевидный подход и мне бы тогда не пришлось думать о производитедьности но тогда встает: нужны специальные тулзы для того чтобы писать на фреймворке. нужны плагины для поддержки нового синтаксиса.

kobezzza 10.05.2015 20:19

Цитата:

Сообщение от UIjs (Сообщение 370158)
это самый очевидный подход и мне бы тогда не пришлось думать о производитедьности но тогда встает: нужны специальные тулзы для того чтобы писать на фреймворке. нужны плагины для поддержки нового синтаксиса.

Тулзы сейчас используются везде, даже чертов CSS уже никто не пишет на CSS, поэтому тулзой больше-меньше - это ерунда. Про подсветку синтаксиса и т.д. - раз ты хочешь делать хороший продукт, то делай и окружение тоже.

Цитата:

я же новый фреймворк решил писать Mega.js
Хех, удачи :)

UIjs 10.05.2015 20:21

kobezzza, как уж там назывется крутой ES6 транслятор?
ну тип самый быстрый, самый минимальнокодагенерируемы й и.т.п.

kobezzza 10.05.2015 20:22

Цитата:

Сообщение от UIjs (Сообщение 370161)
kobezzza, как уж там назывется крутой ES6 транслятор?
ну тип самый быстрый, самый минимальнокодагенерируемы й и.т.п.

https://github.com/babel/babel

UIjs 10.05.2015 20:22

kobezzza, эт точно самый крутой?

kobezzza 10.05.2015 20:23

Цитата:

Сообщение от UIjs (Сообщение 370163)
kobezzza, эт точно самый крутой?

Да.


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