Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #101 (permalink)  
Старый 07.01.2015, 11:53
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Столкнулся с проблемой, что в Chrome в strictMode метод next у объекта генератора помечен как readOnly, но с другой стороны через defineProperty его можно поменять.

В ФФ всё ок.

Копался в спеке, но ничего не нашёл по этому поводу (может конечно проглядел), может кто в курсе или может дать ссылку на ответ? Хочется понять: это баг хрома или действительно по стандарту next readOnly (хотя это очень странно), но тогда почему через defineProperty свойство можно установить.
__________________
kobezzza
code monkey
Ответить с цитированием
  #102 (permalink)  
Старый 07.01.2015, 12:08
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Перевёл Collection на 6to5, почти не было проблем. Snakeskin не поддаётся, но баг какой то суко хитрый, пока сдался.

***

ФФ полностью воспроизводит Collection и Snakeskin без трансляции! Однако транслированный вариант пока работает быстрее.
__________________
kobezzza
code monkey
Ответить с цитированием
  #103 (permalink)  
Старый 07.01.2015, 13:19
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Ура! Я смог перевести SS на 6to5! Приятный профит: скорость транслятора увеличилась на ~10%.
__________________
kobezzza
code monkey
Ответить с цитированием
  #104 (permalink)  
Старый 07.01.2015, 13:51
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

kobezzza, как с багом разобрался ?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #105 (permalink)  
Старый 07.01.2015, 13:51
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

kobezzza,
Цитата:
ФФ полностью воспроизводит Collection и Snakeskin без трансляции!
Но ведь у тебя там classов нет, по этому не считается

kobezzza,
Цитата:
Ура! Я смог перевести SS на 6to5! Приятный профит: скорость транслятора увеличилась на ~10%.
Только недавно она тоже увеличилась, а сейчас ещё раз?)
Ответить с цитированием
  #106 (permalink)  
Старый 07.01.2015, 13:54
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
kobezzza, как с багом разобрался ?
А просто обновил транслятор (сегодня вышло релиза 3-4) и всё заработало

Цитата:
Но ведь у тебя там classов нет, по этому не считается


Цитата:
Только недавно она тоже увеличилась, а сейчас ещё раз?)
Ну недавно увеличилась из-за оптимизаций, что я сделал, а сейчас из-за смены транслятора GCC смог лучше с оптимизировать код.

Вообще в целом SS работает оч шустро, но есть узкие места. Идеи по оптимизации есть, но пока лень имплементить их, уж больно муторно.

***

В целом 6to5 уже production ready транслятор, юзать можно смело. Баги встречаются, но автор просто с адовой скоростью их фиксит
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.01.2015 в 14:04.
Ответить с цитированием
  #107 (permalink)  
Старый 07.01.2015, 14:25
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 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);
Ответить с цитированием
  #108 (permalink)  
Старый 07.01.2015, 14:33
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 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
__________________
kobezzza
code monkey
Ответить с цитированием
  #109 (permalink)  
Старый 07.01.2015, 14:44
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от kobezzza
В strictMode в Chrome (баг?) данный метод нельзя установить через obj.next =
почему ты считаешь это багом?
Если ты запустишь мой пример в strict режиме в любом браузере, то получишь exception
Все дело только в том, что разработчики хрома зачем-то добавили атрибуты configurable=false и writable=false для next
Ответить с цитированием
  #110 (permalink)  
Старый 07.01.2015, 14:47
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
почему ты считаешь это багом?
Потому что в стандарте нет ни слова про специальные дескрипторы этого свойства и ФФ также их нет, а в хроме есть, следовательно хром не следует стандарту ES6 и это баг

И ещё: Object.defineProperty позволяет обойти это поведения, я не знал про это и как я понимаю, что это так и должно быть?
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать HTML фичи? 2chan Events/DOM/Window 6 26.09.2014 18:50