Цитата:
Цитата:
а зачем тогда 2 проекта, и вообще 6to5, если можно всё слить в esnext и всё? тогда и 7to5 не будет нужен - esnext же ("следующая") |
kobezzza,
Цитата:
|
Сейчас открыл страницу Indexed collections. Получается, что в языке будут типизированные массивы, но, при этом, нет этих же простых типов, например:
number{Number<Int8>}
number{Number<Int16>}
Вам не кажется это глупостью? :) |
Цитата:
Как то так будет http://wiki.ecmascript.org/doku.php?...bjects&s=typed Вангую, что 'use asm' станет частью ES7/8, а ля @unsafe в Rust и можно будет писать адовые числодробилки на JS :) |
Сегодня пришёл к вроде бы очевидному трюку, использования let и анонимного блока, для замены самовызываемой анонимной стрелочной функции без параметров, т.е.
// Было
(() => {
var foo = this.someValue;
...
})();
// Стало
{
let foo = this.someValue;
...
}
Кажется, что вариант с блоком покрасивше (хотя менее надёжен и универсален). |
kobezzza, для тех кто пока далековат от es6 поясни плиз код)
|
Цитата:
(function () {
var foo = this.someValue;
...
}).call(this);
В ES6 можно упростить до
(() => {
var foo = this.someValue;
...
})();
А используя ES6 и анонимный блок, можно упростить ещё (только все переменные должны декларироваться через let)
{
let foo = this.someValue;
...
}
Анонимные блоки в JS были с самого начала, но без let в них смысла особо не было, а теперь есть, хотя разумеется вариант с функцией более универсальный, т.к. можно передавать параметры, возвращать значение и использовать в качестве литерала (для передачи в другую функцию и т.д.). |
Можно еще так:
let (foo) {
foo = this.someValue;
…
}
|
Цитата:
{
let a = 5, b = 6;
let s = a + b;
console.log(s);
}
|
Цитата:
Цитата:
|
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 |
Octane, а что скажешь про
Цитата:
И что скажешь насчет
let params = {};
let { params: size = { height:50 } } = {
width: 100
};
Почему не работает? |
Octane,
Цитата:
|
cyber,
Цитата:
Цитата:
https://github.com/lukehoban/es6features |
Цитата:
Цитата:
|
Цитата:
|
Erolast,
Цитата:
Цитата:
cyber, Цитата:
|
Про let, не совсем понятно, можно ли как заюзать let что бы присвоить значение свойству если оно не присвоенно?
Что бы не писать if ... ? |
cyber,
чего? let это как var, но только лучше) |
Цитата:
var obj = {
params: size = …
};
|
Safort, Octane,я просто видел где то такой пример, почему и удивился ..
|
Как заставить webStrom 9 нормально реагировать на es6, писали что есть плагин, но в 9м я его так и не нашел?
|
cyber,
оно же должно автоматом определять es6, не? |
Safort, нашел, там нужно переключить в настройках
https://lh3.googleusercontent.com/-S...%3A11%3A38.png |
Поцаны решили переименовать ES6.
http://webreflection.blogspot.de/201...cmascript.html |
cyber, есть совесть такие большие скрины вставлять? Вставляй их тогда сразу себе прямо в ... ухо)
Сейчас смотрю на es6 классы. Они не запилили приватные модификаторы? Это же ппц :) Видимо, это чтобы нам нескучно было. |
Цитата:
|
Цитата:
|
bes, поменял, всего то 1920x1080 скрин был:D
|
Цитата:
phpstorm8 - settings - javascript - javascript language version |
Не понимаю, почему нельзя было сделать в ES6 так, как в TS?
https://yadi.sk/i/e6dNr8wMeHEbq Нет private & public (точнее паблик есть, но неявный) Лучше бы выкинули всю ерунду с Object.defineProperty() и дали возможность нормально описывать классы. |
| Часовой пояс GMT +3, время: 12:16. |