@JSlang

Страница 462 из 2237
Oleg
07.12.2016
14:06:33
Может быть такое что не выйдет перенести всё

Aldar
07.12.2016
14:07:18
@sovamist , что-то ты замудрил с глобальными методами

Сергей
07.12.2016
14:07:49
В js надо указать на каком объекте ты вызываешь метод В руби нет

Google
Vladimir
07.12.2016
14:08:07
и его как раз завезли

Сергей
07.12.2016
14:08:15
с прокси не надо
И куда вешать прокси?

Дмитрий
07.12.2016
14:08:23
куда угодно

Vladimir
07.12.2016
14:08:26
Object

Дмитрий
07.12.2016
14:08:35
Хоть на {}

Сергей
07.12.2016
14:08:40
Object
Как резолвить?

По контексту

Дмитрий
07.12.2016
14:08:56
Reflect

Сергей
07.12.2016
14:09:04
В руби в середине кода может быть написано some()

Руби начнет резолвить его вверх по стеку и в стороны по объектам

Oleg
07.12.2016
14:10:04
В JS по цепочке лексического окружения

Дмитрий
07.12.2016
14:10:09
Из js это выпилили, это был with

Oleg
07.12.2016
14:10:35
С with - цепочка переключается на объект и его цепочку

Google
Сергей
07.12.2016
14:11:12
Я давно хочу себе транспайлер руби в джс без рантайма Но все встало как раз на резолве методов

Дмитрий
07.12.2016
14:11:59
Совместить with и Proxy

Прости господи

Сергей
07.12.2016
14:12:10
Метода может не быть в этом файле вообще

Дмитрий
07.12.2016
14:12:16
Не важно

Сергей
07.12.2016
14:12:27
Совместить with и Proxy
Покажи пример, я не понимаю

Дмитрий
07.12.2016
14:12:46
5 минут

Oleg
07.12.2016
14:12:52
Кстати о руби - в какой-то момент я переписал одни из алгоритмов с JS на руби. Потому что оно на столько сложное что в голове не умещалось, а нужно было чтобы уместилось. В руби в этом плане проще. Но, в какой-то момент можно будет переписать назад, когда закостенеет и менять ничего больше не нужно будет. На корном руби.

Дмитрий
07.12.2016
14:12:57
Не самый простой выкрутас

Сергей
07.12.2016
14:13:23
Будет забавно, если ребята из опал не смогли сделать, а мы сможем

Oleg
07.12.2016
14:13:45
Надо попробовать, даже интересно стало

Сергей
07.12.2016
14:15:01
Если придумаем способ, я продолжу писать

Дмитрий
07.12.2016
14:15:04
class Some { anyMethod() { shouldBeValid() } }

Я правильно понимаю задачу?

Сергей
07.12.2016
14:15:22
Ага

Наследование тоже должно уметь

Но давай сначала это

ещё в рубях есть очень сильная штука, это метод в который передается управление, если вызываемый метод был не найден прям как в пэхапэ

будь такая штука в js то всё было бы просто

Ivan
07.12.2016
14:29:42
а кто чем ошибки трекает на проде?
Sentry уже говорили? Он платный как сервис, но можно у себя развернуть, и будет бесплатный

Google
Дмитрий
07.12.2016
14:35:54
Oleg
07.12.2016
14:35:59
Дмитрий
07.12.2016
14:36:01
Везде strict mode

Oleg
07.12.2016
14:36:12
В хроме в консоле работает

Вполне

Но стрикт увы, да

Дмитрий
07.12.2016
14:36:51
У меня не взлетает

Oleg
07.12.2016
14:36:59
Вот

Oleg
07.12.2016
14:37:23
У меня видимо волшебный хром

Дмитрий
07.12.2016
14:37:31
А это я уже сделал, делая обёртку)

Но object.method

Сергей
07.12.2016
14:37:47
гист

Дмитрий
07.12.2016
14:38:01
Просто method без with никак

Oleg
07.12.2016
14:38:45
Генерить если то можно и без стрикта

Хотя это конечно очень костыль

Сергей
07.12.2016
14:39:40
можно конечно ко всем вызовам добавлять что-то вроде $LOCAL.

Google
Дмитрий
07.12.2016
14:39:45
Сергей
07.12.2016
14:39:48
но если не читать, то минификация и ок

Дмитрий
07.12.2016
14:40:00
const goal = () => console.log('And we have a winner') const methodMissing = property => () => console.log('you called ' + property + ' but it doesn\'t exist!') const getter = (object, prop) => Reflect.has(object, prop) ? Reflect.get(object, prop) : methodMissing(prop) const proxyParams = { get: getter } class Some { constructor() { return new Proxy(this, proxyParams) } anyMethod() { goal() } } const value = new Some value.anyMethod2() value.anyMethod()

> you called anyMethod2 but it doesn't exist! > And we have a winner

Oleg
07.12.2016
14:40:31
Впрочем про генерить - можно и просто проверять наличие, если нет ничего - вызывать метод дефолтовый, и никаких трайкатчев

Oleg
07.12.2016
14:41:42
Кейс?

Где нельзя

Admin
ERROR: S client not available

Дмитрий
07.12.2016
14:41:58
Гляньте сначала пример)

Зря что ли писал ?

Oleg
07.12.2016
14:42:16
Уже читаю

Сергей
07.12.2016
14:42:17
Кейс?
динамическое наследование

я тоже читаю

Oleg
07.12.2016
14:43:26
Годнота

Сергей
07.12.2016
14:43:42
мне кажется или если выпилить proxy тоже будет работать кроме methodMissing

https://repl.it/EjIZ/1

Дмитрий
07.12.2016
14:44:40
так там кроме methodMissing и нет ничего)

Oleg
07.12.2016
14:44:54
Эм

Сергей
07.12.2016
14:44:56
https://repl.it/EjIZ/2

Google
Oleg
07.12.2016
14:44:59
Ну так будет просто вызов же

Не?

Если выпилить

Дмитрий
07.12.2016
14:45:04
Это иллюстрация форварда на метод при отсутствии метода

Сергей
07.12.2016
14:45:22
это да работает

прям гуд)

https://repl.it/EjIZ/3

но вот так ((

Дмитрий
07.12.2016
14:45:57
А тут я объясню ход мысли

В прокси где getter мы вызываем методы обернутые в with

В with такой же враппер-любого-метода, но не выводящий сообщение в консоль, а резолвящий на свой метод

Но with в js — всё ¯\_(ツ)_/¯

А так бы работало

Сергей
07.12.2016
14:48:43
видимо придется что-то вроде $LC.callMethod(‘demo’, [‘arg1’, ‘arg2’])

Дмитрий
07.12.2016
14:48:44
Если при транспиляции просто бахнуть ко всем методам внутри классов this, то проблема будет исчерпана

Сергей
07.12.2016
14:49:13
ну теоретически можно

правда это всё же не всегда this

придется во все классы пихать Proxy

это достаточно медленно

можно транспайлить swift в js

почти 1 к 1

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