07.01.2015, 11:53
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Столкнулся с проблемой, что в Chrome в strictMode метод next у объекта генератора помечен как readOnly, но с другой стороны через defineProperty его можно поменять.
В ФФ всё ок.
Копался в спеке, но ничего не нашёл по этому поводу (может конечно проглядел), может кто в курсе или может дать ссылку на ответ? Хочется понять: это баг хрома или действительно по стандарту next readOnly (хотя это очень странно), но тогда почему через defineProperty свойство можно установить.
|
|
07.01.2015, 12:08
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Перевёл Collection на 6to5, почти не было проблем. Snakeskin не поддаётся, но баг какой то суко хитрый, пока сдался.
***
ФФ полностью воспроизводит Collection и Snakeskin без трансляции! Однако транслированный вариант пока работает быстрее.
|
|
07.01.2015, 13:19
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Ура! Я смог перевести SS на 6to5! Приятный профит: скорость транслятора увеличилась на ~10%.
|
|
07.01.2015, 13:51
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
kobezzza, как с багом разобрался ?
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
07.01.2015, 13:51
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
kobezzza,
Цитата:
|
ФФ полностью воспроизводит Collection и Snakeskin без трансляции!
|
Но ведь у тебя там classов нет, по этому не считается
kobezzza,
Цитата:
|
Ура! Я смог перевести SS на 6to5! Приятный профит: скорость транслятора увеличилась на ~10%.
|
Только недавно она тоже увеличилась, а сейчас ещё раз?)
|
|
07.01.2015, 13:54
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
kobezzza, как с багом разобрался ?
|
А просто обновил транслятор (сегодня вышло релиза 3-4) и всё заработало
Цитата:
|
Но ведь у тебя там classов нет, по этому не считается
|
Цитата:
|
Только недавно она тоже увеличилась, а сейчас ещё раз?)
|
Ну недавно увеличилась из-за оптимизаций, что я сделал, а сейчас из-за смены транслятора GCC смог лучше с оптимизировать код.
Вообще в целом SS работает оч шустро, но есть узкие места. Идеи по оптимизации есть, но пока лень имплементить их, уж больно муторно.
***
В целом 6to5 уже production ready транслятор, юзать можно смело. Баги встречаются, но автор просто с адовой скоростью их фиксит
Последний раз редактировалось kobezzza, 07.01.2015 в 14:04.
|
|
07.01.2015, 14:25
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Сообщение от kobezzza
|
Столкнулся с проблемой, что в Chrome в strictMode метод next у объекта генератора помечен как readOnly, но с другой стороны через defineProperty его можно поменять.
В ФФ всё ок.
Копался в спеке, но ничего не нашёл по этому поводу (может конечно проглядел), может кто в курсе или может дать ссылку на ответ? Хочется понять: это баг хрома или действительно по стандарту next readOnly (хотя это очень странно), но тогда почему через defineProperty свойство можно установить.
|
function Constructor() {}
Object.defineProperty(Constructor.prototype, 'test', {
value: 1,
configurable: false,
writable: false
});
var obj = new Constructor;
obj.test = 2;
alert(obj.test);
|
|
07.01.2015, 14:33
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Octane, интересно, что
function Constructor() {}
Object.defineProperty(Constructor.prototype, 'test', {
value: 1,
configurable: false,
writable: false
});
var obj = new Constructor;
Object.defineProperty(obj, 'test', {
value: 2
});
alert(obj.test);
Но вообще мой вопрос в другом: правильно ли, что next у объекта генератора read-only, т.к. в ФФ поведение другое и в стандарте ничего про это я не нашёл, ну и плюс это странно, т.к. в JS любой базовый метод можно переопределить или доопределить, например,
Array.prototype.forEach = function () {
...
};
И что принципиально другое в
function *foo() {
}
var bar = foo();
bar.next = function () {
...
};
Собственно, вот https://github.com/kobezzza/Collecti...orEach.js#L796
|
|
07.01.2015, 14:44
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Сообщение от kobezzza
|
В strictMode в Chrome (баг?) данный метод нельзя установить через obj.next =
|
почему ты считаешь это багом?
Если ты запустишь мой пример в strict режиме в любом браузере, то получишь exception
Все дело только в том, что разработчики хрома зачем-то добавили атрибуты configurable=false и writable=false для next
|
|
07.01.2015, 14:47
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
почему ты считаешь это багом?
|
Потому что в стандарте нет ни слова про специальные дескрипторы этого свойства и ФФ также их нет, а в хроме есть, следовательно хром не следует стандарту ES6 и это баг
И ещё: Object.defineProperty позволяет обойти это поведения, я не знал про это и как я понимаю, что это так и должно быть?
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Как сделать HTML фичи? |
2chan |
Events/DOM/Window |
6 |
26.09.2014 18:50 |
|
|
|