
JetFightzer ?
09.11.2016
16:19:53
а если создавать - то и без них можно
принципиально => не функциоальнее, чем self

Дмитрий
09.11.2016
16:22:21

JetFightzer ?
09.11.2016
16:22:50
по-моеиу есть просто решение, но тогда функций не будет в прототипе
отдельно объявляем методы, в конструкторе их биндим

Google

JetFightzer ?
09.11.2016
16:23:08
но это в общем-то то же, что плодить функции прямо в экземпляре

Дмитрий
09.11.2016
16:28:09

Каїн
09.11.2016
16:34:08
Слишком просто
Аплай ту зе вин

Дмитрий
09.11.2016
16:38:17

[Anonymous]
09.11.2016
16:39:28
но это в общем-то то же, что плодить функции прямо в экземпляре
а) можно использовать(внезапно) отдельный обькт с методами и ссылку засунуть в конструктор
б) если ты используешь данные экземпляры в работе функций, не должно возникнуть никаких проблем. возьмом например массив, где ты можешь, при возвращаемом значении массива, продолжать цепочку.

Oleg
09.11.2016
16:39:32
Можно хранить в свойствах функций уникальное значение, по нему обращаться в реестр контектов и оттуда забирать необходимый this

Vladimir
09.11.2016
16:40:12

Oleg
09.11.2016
16:40:29
На самом деле ВСЁ что сейчас обсуждаем - не нужно
Ибо можно простым и прозрачным способом всё сделать

[Anonymous]
09.11.2016
16:40:53

Дмитрий
09.11.2016
16:41:37
Map с парами Symbol:Function в глобальном контексте

Oleg
09.11.2016
16:41:50
Но у нас же тут теплый ламповый чатик, вот и мечтаем о всяком ?

Google

Oleg
09.11.2016
16:41:58
+

Дмитрий
09.11.2016
16:43:18
Я о таком задумывался только когда just for lulz прикидывал как сделать перегрузку операторов js, потому что этот способ неправильный сразу во всём))

Oleg
09.11.2016
16:43:52
Есть ещё круче способ - евалить по своему
Собирая из одного JS другой
Биндя то что нужно, оборачивая и тд

Дмитрий
09.11.2016
16:44:13
Не, это как раз таки просто
Но если это реально прям eval или транспиляция текста, то это тупиковый путь

Oleg
09.11.2016
16:44:56
Но самый могущественный

Дмитрий
09.11.2016
16:45:00
Нет
Просто потому что интеропа с языком нет

[Anonymous]
09.11.2016
16:45:12

Oleg
09.11.2016
16:45:29
Ну тут как посмотреть
Можно все вызовы пропатчить до непотери контекста мол если есть такое в прототипе прототипов - то оборачивать, возможно даже подменяя this на self и всё такое

Дмитрий
09.11.2016
16:47:46

Oleg
09.11.2016
16:48:36
Свой джаваскрипт делаешь?


Дмитрий
09.11.2016
16:54:32
Свой джаваскрипт делаешь?
Пробовал, для чистоты синтаксиса однострочников на ramda я выкинул из выражения все упоминания R.( и чутка подставил символов для краткости
data :: when isEmpty [ identity 'empty list' of ] [+] 'tested' [*] [ objOf payload ]
преобразовывается в готовую функцию
R.pipe( R.when( R.isEmpty , R.pipe( R.identity( 'empty list' ), R.of), R.append( 'tested' ), R.map( R.objOf( 'payload' ) )
[*] => R.map
[+] => R.append
[ ... ] => R.pipe( ... ), то есть это такие функциональные скобки
Если есть кавычки в токене — то это string
Если токен существует в ramda, то это функция, если нет — это либо опять строка, либо аргумент, либо ошибка
Так как внутри R.pipe существуют только функции, то значит можно писать всё без скобок, все данные полюбому относятся к ближайшей функции слева
data — это передаваемое в функцию значение, его можно опустить, если оно всего одно (по принципу работы R.pipe), его можно упоминать в теле функции, то есть это обычный аргумент, сколько их передашь — столько и будет в рендеренной функции
Но даже уже синтаксис arg :: pipe — это костыль вокруг первоначальной идеи, потому что внутри строк ты неможешь взаимодействовать с языком, тебе недоступны очень многие конструкции и фишки языка
То есть это просто, полный тупик. В языке ввели async await — для их поддержки ты берешь их и реализуешь заново. Нет, короче это не вариант)


[Anonymous]
09.11.2016
16:58:21
отлично, сохранила все себе

Google

JetFightzer ?
09.11.2016
16:58:45
а async await есть в ноде7?

Александр
09.11.2016
16:58:58
c флагом

Дмитрий
09.11.2016
16:59:07
В V8 есть, под флагом

Nikolay
09.11.2016
16:59:35
в хромчик уже добавили еж

Дмитрий
09.11.2016
16:59:38
Это считай и не в ноде по факту и чем-то черевато, так как изначально нестабильно, но я не сталкивался)

JetFightzer ?
09.11.2016
16:59:50
оффтоп: у меня часы с плавным ходом стрелки, не тикают и не бесят,уже вроде и привык но никак не нарадуюсь


Oleg
09.11.2016
17:08:29
Пробовал, для чистоты синтаксиса однострочников на ramda я выкинул из выражения все упоминания R.( и чутка подставил символов для краткости
data :: when isEmpty [ identity 'empty list' of ] [+] 'tested' [*] [ objOf payload ]
преобразовывается в готовую функцию
R.pipe( R.when( R.isEmpty , R.pipe( R.identity( 'empty list' ), R.of), R.append( 'tested' ), R.map( R.objOf( 'payload' ) )
[*] => R.map
[+] => R.append
[ ... ] => R.pipe( ... ), то есть это такие функциональные скобки
Если есть кавычки в токене — то это string
Если токен существует в ramda, то это функция, если нет — это либо опять строка, либо аргумент, либо ошибка
Так как внутри R.pipe существуют только функции, то значит можно писать всё без скобок, все данные полюбому относятся к ближайшей функции слева
data — это передаваемое в функцию значение, его можно опустить, если оно всего одно (по принципу работы R.pipe), его можно упоминать в теле функции, то есть это обычный аргумент, сколько их передашь — столько и будет в рендеренной функции
Да, думал я бывало как можно было бы пропатчить так некоторые места в ExtJS...


Vladimir
09.11.2016
17:11:21
Господа! Объясните пожалуйсто, почему так происходит? https://jsperf.com/innerhtml-vs-removechild

Дмитрий
09.11.2016
17:11:43

Vladimir
09.11.2016
17:11:44
Почему
while (box.firstChild) {
box.removeChild(box.firstChild);
}
Быстрее чем

Vladimir
09.11.2016
17:11:57
box.innerHTML = '';

Дмитрий
09.11.2016
17:14:29
box.innerHTML = '';
Вероятно, даже если у тебя новый код пуст, то перерендеринг DOM — всё равно затратная операция

Oleg
09.11.2016
17:14:42

hlomzik
09.11.2016
17:15:30
Быстрее чем
раньше наоборот было) такие вопросы всегда плохи)
ответ обычно — потому что в данный момент в данном движке с данными настройками в данном окружении вот это быстрее

Дмитрий
09.11.2016
17:25:21
Фичи, правда, должны быть конечно достойными полноценного языка
Не, это прямо в js, просто переосмысливая какие-то вещи
scala like pattern matching
switch(itch.on(obj)) {
case itch.case = e => (e/2+1) > 100 : return 'cool number'
case itch.case = e => e instanceof MyClass
&& e.value.length>0 : return 'Non-empty myclass element'
case itch.case = 'Matched string' : return 'Just string'
case itch._ = : return 'not matched'
}
Это короче switch в котором в case стоят либо сопоставляемые значения как обычно, либо сразу функции, которыми проверяется переданная переменная
Причём break не нужен
¯\_(ツ)_/¯

Google

Дмитрий
09.11.2016
17:33:06
Но это чёто-то очень злое, конечно)) Но фактически, с прокси можно сделать и так. Короче js — непаханное поле для экспериментов %)

[Anonymous]
09.11.2016
17:42:59
скала, это функции + жава?

Дмитрий
09.11.2016
17:43:46
Ну да, много интересных фишек в языке в плане ооп

[Anonymous]
09.11.2016
17:45:19

Vladimir
09.11.2016
17:47:08

Дмитрий
09.11.2016
17:48:52
Вот вообще тяжёлая психоделия
Тот же самый пример, что и чуть выше, но без транспиляции, на чистом js
[
[ R.when, , R.isEmpty, [ [ R.identity, , 'empty list' ], R.of ] ],
[ R.append, , 'tested' ],
[ R.map, , [ R.objOf, , 'payload' ] ]
]
Так как формально у нас не куча вложенных функций, а массив переменных, то возникает возможность произвольной перемотки и визуализации выполнения, чисто как в redux. Тот же инструметарий devtools, только перематывает и отлаживает не данные, а сам код
Да, функция задаётся массивом с двумя запятыми после первого элемента ? Но благодаря этому вообще вся программа (синхронная) проходится одним редюсером.
Так как меня внесут во все чёрные списки, если я кому - то это покажу, то конечно это только Proof of work ?

Admin
ERROR: S client not available

Anton
09.11.2016
17:53:56
это все что бы писать функциаональщину?

Дмитрий
09.11.2016
17:58:24
Естественно я такой адок никуда подключать не буду, поэтому пока что успокоился и забил))

Anton
09.11.2016
17:59:26
та просто ужасные вещи ты показываешь. RxJS глянь, что ли
но это уже с реактивщиной

Vladimir
09.11.2016
17:59:33
охуенные ощущения https://github.com/iamstarkov/hyper-keymap/blob/master/src/index.js#L71-L74

Дмитрий
09.11.2016
18:01:16
RxJS видел

Anton
09.11.2016
18:02:08
та в жопу такую суть, если вот это так нужно писать
эти конструкции уже на уровне эзотерики

Дмитрий
09.11.2016
18:03:34

Google

Anton
09.11.2016
18:04:15
та я не вчитывался, сорри, просто увидел это и все и охирел)

Дмитрий
09.11.2016
18:05:09

[Anonymous]
09.11.2016
18:07:31
Вот вообще тяжёлая психоделия
Тот же самый пример, что и чуть выше, но без транспиляции, на чистом js
[
[ R.when, , R.isEmpty, [ [ R.identity, , 'empty list' ], R.of ] ],
[ R.append, , 'tested' ],
[ R.map, , [ R.objOf, , 'payload' ] ]
]
Так как формально у нас не куча вложенных функций, а массив переменных, то возникает возможность произвольной перемотки и визуализации выполнения, чисто как в redux. Тот же инструметарий devtools, только перематывает и отлаживает не данные, а сам код
я уже поплыла, спасибо

Дмитрий
09.11.2016
18:12:04
Извиняюсь, я больше так не буду ??

[Anonymous]
09.11.2016
18:25:23
переодически полезно, напоминание, что не знаю жс

Каїн
09.11.2016
18:28:43
Это ты не ширяешься фп как они
Наркоманы

Vladimir
09.11.2016
18:29:10
ну не надо так
линзы добро

hlomzik
09.11.2016
18:29:13

Anton
09.11.2016
18:29:25
есть нормальное фп, а это наркоманское)

Каїн
09.11.2016
18:29:26
Я с любовью

Vladimir
09.11.2016
18:29:28

Каїн
09.11.2016
18:30:00
Это каратэ

Defiancefew
09.11.2016
18:30:08
а потом откуда этот js fatique

Дмитрий
09.11.2016
18:30:10
Фп курильщика

Каїн
09.11.2016
18:30:19
В мире дзюдоистов

Oleg
09.11.2016
18:31:11
JS на столько гибок что тут в рамках одного языка можно подъязыки со своими подходами получать