Необычный синтаксис для создания метода объекта из единственного строкового массива элемента
Я наткнулся на этот урок по избыточным действиям и заметил необычный синтаксис для создания метода объекта:
const stringArray = ["STRING_ARRAY"];
const strangeObject = {
[stringArray]() {
console.log(stringArray);
}
};
Может кто-нибудь назвать или объяснить используемую синтаксическую функцию?
1 ответ
Решение
Это сочетание двух особенностей ES6
,
Вы можете вычислить свойство в объекте:
const b = "foo";
const a = {
[b]: true
};
// same as
const a = {};
a[b] = true;
Существует также сокращение для функций:
const a = {
b() { console.log("foo");}
};
// same as
const a = {
b: function() { console.log("foo");}
};
Если вы смешаете их, вы получите то, что у вас есть: метод, имя которого является вычисленным значением. Здесь ваш объект будет таким же, как
const strangeObject = {
STRING_ARRAY: function() {
console.log("STRING_ARRAY");
}
};
Всякий раз, когда вычисленное значение для объекта не является строкой, как в вашем случае, оно будет преобразовано в строку.
В твоем случае
["STRING_ARRAY"].toString() === "STRING_ARRAY"
так что это мало что меняет.