Страницы

суббота, 14 мая 2016 г.

JavaScript Symbol.species

Наверное самой ожидаемой фичей ES6 для меня является proper tail calls, которая в V8 похоже на сегодня не реализована. Недавно обратил внимание на то, что в Node.js версии 6.0.0 реализовали другую полезную фичу по имени Symbol.species, которая позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов. Правда пока только под флагом --harmony, поэтому с наследованием от встроенных конструкторов я бы повременил.


Простой пример:
class MyArray extends Array { }
 
const array = new MyArray(1, 2, 3);
const mapped = array.map(x => x * x);
 
console.log('array:', array);
console.log('mapped:', mapped);
console.log('mapped instanceof MyArray:', mapped instanceof MyArray);
console.log('mapped instanceof Array:', mapped instanceof Array);



Что называется почувствуйте разницу.

Кстати, со слов уважаемого Eric Elliott, фича proper tail calls реализована в Babel.