2016-03-02 3 views
-4

Рассмотрим следующий код (взятый из mdn):Более короткие функции в ES2015?

var a = [ 
    "Hydrogen", 
    "Helium", 
    "Lithium", 
    "Beryl­lium" 
]; 

var a2 = a.map(function(s){ return s.length }); 

var a3 = a.map(s => s.length); 

Можно ли сделать еще короче? Например .:

var a4 = a.map(.length); 

выше не работает (это приводит к SyntaxError: Unexpected token .).

Так есть ли способ сделать это в ES2015?

+4

Я надеюсь, что нет. Синтаксис просто неверен. – Dropout

+1

№ 12 больше идти ... –

+1

нет, вы не можете. – Grundy

ответ

2

Ну, вы можете попытаться определить прокси-объект, как это:

_ = new Proxy({}, { 
    get: (t, name) => x => x[name] 
}); 

, а затем

var a3 = a.map(_.length) 

ли это имеет смысл или нет, это другой вопрос.

0

Вы не можете сделать это так, потому что это будет в конфликте с тем, как используются property accessors.

От ECMAScript® 2015 Language Specification:

В спецификации тексте и алгоритмах, точка обозначение может быть использовано для обозначения конкретной области значения записи. Например, если R - это запись, показанная в предыдущем абзаце, тогда R. [[Field2]] является сокращением для «поля R с именем [[field2]]».

TL; DR Синтаксис неверен. Вы не можете получить доступ к собственности ничего, не считая философского.

Смежные вопросы