Автор Тема: Вопрос по биндингу ? Или что тут еще требуется?  (Прочитано 111376 раз)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #90 : Октябрь 30, 2013, 10:57:49 am »
Вместо отладчика использую функции вывода. Поэтому очень медленно разбор происходит. Не посоветуете, какой-нибудь простенький отладчик скриптов?

Попробуйте гуглохромный отладчик:
https://developers.google.com/chrome-developer-tools/docs/javascript-debugging
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #91 : Октябрь 30, 2013, 11:15:17 am »
Да хоть IE'шный (в современном IE он вполне пристойный). Или Firebug в Firefox. Отладчик сейчас есть в любом приличном браузере.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #92 : Октябрь 30, 2013, 11:17:40 am »
Конкретное место ошибки:

В var ModuleResolver в методе compile
ругается на параметр this.__resolveModule.bind(this)


Почему

хотя this.__resolveModule это функция, но вызывается без скобок? В этом случае она же вроде текст функции возвращает? Или так и надо?

Не знаю, по этой ли причине, но свойства bind у this.__resolveModule не имеется. Аналогично думаю и с другим параметром функции compile
В js функция - это объект. С полями, методами и прочим. так что тут просто у функции __resolveModule  вызывают "метод" (а на самом деле поле содержащее функцию) bind.

А текст функции, вроде как, в общем случае получить как раз нельзя. На этапе исполнения. Но могу ошибаться конечно.
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #93 : Октябрь 30, 2013, 11:25:44 am »
А хром можно использовать для яваскриптов не на web странице? (скорее всего в качестве скриптов плагинов используются  ActiveScript )

У меня как раз возвращает текст функции, если без скобок, а если со скобками, то объект (если она при этом корректна)

Но бинд я так понял, в моем случае не поддерживается, хотелось бы его заменить, но не врубился как

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #94 : Октябрь 30, 2013, 12:08:23 pm »
А хром можно использовать для яваскриптов не на web странице? (скорее всего в качестве скриптов плагинов используются  ActiveScript )

Можно использовать nodejs:
http://nodejs.org/api/debugger.html
https://github.com/node-inspector/node-inspector
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #95 : Октябрь 30, 2013, 01:46:28 pm »
У меня как раз возвращает текст функции, если без скобок, а если со скобками, то объект (если она при этом корректна)
Это НЕ текст, это результат "рефлекшина" - отладочная хрень, результат pretty print'a. Если б это был "текст", то есть строка, то можно было бы так: var foo = function(){return 1;}; alert(foo.length);

Должно вернуть не 0 - ведь длина текста (число символов) явно не нуль :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #96 : Октябрь 30, 2013, 02:41:39 pm »
Должно вернуть не 0 - ведь длина текста (число символов) явно не нуль :-)

А ты попробуй
alert(("" + foo).length);

P.S. Я не знаю что там говорит стандарт, но в каких-то случаях я видел даже сохраненные комментарии при "распечатке" функции.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #97 : Октябрь 30, 2013, 02:57:01 pm »
Чувствую, что bind зачем то нужен, но у меня он не работает. Используется всего в двух местах. Его нельзя заменить чем-нибудь?

bind нет в IE8 (я специально отказался от его использования в точй части компиялятора, который на страничке). Эмулируется примерно так (для твоего случая):
var result = f.bind(this);
аналолг:
var self = this; var result = function(){return f.call(self);}

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #98 : Октябрь 30, 2013, 02:58:41 pm »
Должно вернуть не 0 - ведь длина текста (число символов) явно не нуль :-)

А ты попробуй
alert(("" + foo).length);

P.S. Я не знаю что там говорит стандарт, но в каких-то случаях я видел даже сохраненные комментарии при "распечатке" функции.
Извращенец! :-) Можно же так: foo.toString() , все!

Но факт что просто foo это не строка и не текст - это объект!
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #99 : Октябрь 30, 2013, 03:00:26 pm »
посмотрел, в функциях активно используется this (с которым у меня ранее были проблемы). Может быть проблема такого же рода?

Трудно угадать :)


Вроде был упомнинание, что можно компилировать файлы из командной строки. Это как? Последовательность действий не подскажите?

Для командной строки оно работает только для nodejs.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #100 : Октябрь 30, 2013, 03:16:19 pm »
посмотрел, в функциях активно используется this (с которым у меня ранее были проблемы). Может быть проблема такого же рода?

Трудно угадать :)


Вроде был упомнинание, что можно компилировать файлы из командной строки. Это как? Последовательность действий не подскажите?

Для командной строки оно работает только для nodejs.
не пугай так! ведь можно же собрать в один этот самый oc.js и уже этот монолит гонять хоть из командной строки хоть в node.js хоть в консоль браузера пихать, хоть еще куда.

Ну, тем более что, насколько я понимаю, adva не нужен компилятор прямо в Снегопат'е, ему нужно обустроить свое рабоче-разработческое место, возможно без браузера. То есть пускать компилер через node.js вполне кошерный вариант (если туда еще отладчик жабашкрипта прикрутить)
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #101 : Октябрь 30, 2013, 03:19:51 pm »
не пугай так! ведь можно же собрать в один этот самый oc.js и уже этот монолит гонять хоть из командной строки хоть в node.js хоть в консоль браузера пихать, хоть еще куда.

В смысле да. Из коробки только для nodejs. Для чего-то другого надо смотреть как сделаон для nodejs.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #102 : Октябрь 30, 2013, 03:21:37 pm »
не пугай так! ведь можно же собрать в один этот самый oc.js и уже этот монолит гонять хоть из командной строки хоть в node.js хоть в консоль браузера пихать, хоть еще куда.

В смысле да. Из коробки только для nodejs. Для чего-то другого надо смотреть как сделаон для nodejs.
Дык можно же oc.js использвать as is для всего подряд. По сути фича ноды лишь в "динамической подгрузке модулей", то есть динамический компоновщик типа. А oc.js уже статически скомпонован и ничего ему больше от этой жизни не нужно.
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #103 : Октябрь 31, 2013, 04:30:05 am »
Ну, тем более что, насколько я понимаю, adva не нужен компилятор прямо в Снегопат'е, ему нужно обустроить свое рабоче-разработческое место, возможно без браузера. То есть пускать компилер через node.js вполне кошерный вариант (если туда еще отладчик жабашкрипта прикрутить)

Да да, именно это мне и надо, подскажите, пожалуйста, как это сделать? И компилить, и отладчик бы тоже не помещал. Сам боюсь очень долго буду разбираться, но если нет наработок по этому поводу, то разберусь. Просто уже хотелось бы нужными задачками заняться, а не обустройстом рабочего места :)

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Вопрос по биндингу ? Или что тут еще требуется?
« Ответ #104 : Октябрь 31, 2013, 04:30:56 am »
К тому же английский, далеко не родной мне язык, хотя с другой стороны тоже бы надо скилы прокачивать начинать :), хотя бы на чтение без словаря