@JSlang

Страница 328 из 2237
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
по-моеиу есть просто решение, но тогда функций не будет в прототипе отдельно объявляем методы, в конструкторе их биндим
Решение — не использовать bind, this и наследование вообще, а просто делать функциональную композицию

Каїн
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
Можно хранить в свойствах функций уникальное значение, по нему обращаться в реестр контектов и оттуда забирать необходимый this
мне кажется или это правда самый лучший и незаметный способ выстрелить себе в голову?

Oleg
09.11.2016
16:40:29
На самом деле ВСЁ что сейчас обсуждаем - не нужно

Ибо можно простым и прозрачным способом всё сделать

Дмитрий
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
Map с парами Symbol:Function в глобальном контексте
у тебя на гисте есть пример, этого? я просто вот пытаюсь въехать в эту тему, но не выходит

Oleg
09.11.2016
16:45:29
Ну тут как посмотреть

Можно все вызовы пропатчить до непотери контекста мол если есть такое в прототипе прототипов - то оборачивать, возможно даже подменяя this на self и всё такое

Дмитрий
09.11.2016
16:47:46
у тебя на гисте есть пример, этого? я просто вот пытаюсь въехать в эту тему, но не выходит
Ну просто набор ссылок на объекты, плоская неограниченная коллекция const mapper = new Map() function mark(func) { const marker = Symbol() mapper.set(marker, func) }

Ну тут как посмотреть
Никак, я просто прямо в это и упёрся

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
Да, думал я бывало как можно было бы пропатчить так некоторые места в ExtJS...
Есть другой подход, прям в языке определять новые понятия с помощью всяких багов/фич языка, но это такая сумасшедшая штука, что даже писать страшно?

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 — всё равно затратная операция

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
Ну да, много интересных фишек в языке в плане ооп

Дмитрий
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
та я не вчитывался, сорри, просто увидел это и все и охирел)
Тогда да, представляю? Контекст — что можно сделать c js не переходя к транспиляторам

охуенные ощущения https://github.com/iamstarkov/hyper-keymap/blob/master/src/index.js#L71-L74
Я впечатлился ещё когда увидел твит про композицию линз)

Дмитрий
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 на столько гибок что тут в рамках одного языка можно подъязыки со своими подходами получать

Страница 328 из 2237