kobezzza, спасибо:)
|
В ES7 планируется добавить специальный способ обращения к символьным свойствам объекта через ::, например,
foo::some() Как по мне, то данная фича очень нужна и я считаю, что все встроенные свойства и методы Object.prototype должны быть продекларированы именно так, например, for (let key in foo) { if (foo::getOwnPropertyDescriptor(key)) { ... } } Это уберёт потенциальные ошибки при использовании объекта, как таблицы. function foo(params) { if (params.toString) { alert('ffffuuuuu'); } } foo({}); А вот если бы базовый метод toString был бы символьный и доступен через :: то такой бы ошибки не было, а проблемы совместимости старого кода можно решить флагом: 'use es7-strict'; По аналогии с useAsm и useStrict. К слову, символьные свойства были введены как раз, чтобы можно было безопасно расширять прототипы объектов, в частности и Object.prototype. |
Какое-то lua, но через жопу, имхо. Проблема то понятна, как и необходимость решения, но вот само решение выглядит по мне как-то уродливо...
|
Цитата:
Symbol.iterator === Symbol('iterator') → false , как тогда обращаться к символьным-свойствам, если я сделаю так:let obj = { [Symbol('some')]: 1, [Symbol('some')]: 2 }; что должен вернуть obj::some ?Скорее всего это просто короткая запись для obj[Symbol.iterator] → obj::iterator obj[Symbol.toStringTag] → obj::toStringTag obj[Symbol.toPrimitive] → obj::toPrimitive … и т.д.тоесть всегда на well-known symbols будет ссылаться |
Octane, https://github.com/zenparsing/es-abstract-refs
PS: Перечитав драфт понял, что сам его не до конца понял :) Подождём пару лет, пока реализуют ES7 :) UPD: Прочитал https://github.com/zenparsing/es-function-bind и понял, что здесь работа не с символьными свойствами (как я изначально думал), а API для биндинга функций к объекту, т.е. сахар для паттерна заимствования. Array.prototype.slice.call(...) Если это так, то это вообще мегакруто, т.к. решает проблему расширения базовых объектов и даёт новый способ для code-reuse! |
Перевидите на человеческий язык (то что выделенно) что за "шаблоны деструктуризации" ?
Цитата:
var getTempItems = (...rest) => rest; // эквивалент var getTempItems = function() { return [].slice.apply(arguments) }; Еще не вкурю почему не работает let params = {}; let { params: size = { height:50 } } = { width: 100 }; В еs6 есть что то типо __proto__ или уже можно __proto__ юзать? |
cyber,
оно делает работу с переменным количеством аргументов немного удобнее Следующий пример сработает во всех нормальных браузерах, т.е. в панде. var func = (a, ...others) => { console.log(a, others); }; func(1,2,4,5); |
cyber,
Цитата:
|
Цитата:
И как включить поддержку arrow functions в хроме, я поставил флаг harmony и нефига |
хз никуда __proto__ не делся:
http://people.mozilla.org/~jorendorf...type.__proto__ http://people.mozilla.org/~jorendorf...t-initializers в ES6 добавили возможность использовать __proto__ прямо в литерале: var obj = { 0: 1, 1: 2, length: 2, __proto__: Array.prototype }; obj.forEach(x => alert(x)); а вообще есть setPrototypeOf/getPrototypeOf |
Часовой пояс GMT +3, время: 18:52. |