В фигурных скобках перечисляется объект и его синтаксис.
Можно дублировать свойства имен, при этом свойство с новым именем перезапишет свойство со старым именем.
Notation in ES5
varo1={};varo2={a:"foo",// value is stringb:42,// value is numberc:{}// value is other object};vara="foo",b=42,c={};varo3={a:a,b:b,c:c};varo4={property:function([parameters]){},getproperty(){},setproperty(value){},generatorMethod:function*(){}};
Notation in ES6+
When evaluating the property name from an expression, place the code into square brackets {[expression]: value}. The expression evaluation result becomes the property name.
We can evaluate function name:
Expression can be used to evaluate property names:
Object.create()
Метод Object.create(proto, ?propertiesObject) создаёт новый объект с указанными объектом прототипа и свойствами.
Object.fromEntries()
Создает новый объект из массива entries. Противоположность Object.entries.
Object.fromEntries() is flexible: It accepts iterables (which includes Arrays and is consistent with new Map() etc.). Its [key,value] pairs are only required to be objects that have properties with the keys '0' and '1' (which includes 2-element Arrays).
Object() constructor
Конструктор Object создаёт объект-обёртку для переданного значения. Если значением является null или undefined, создаёт и возвращает пустой объект, в противном случае возвращает объект такого типа, который соответствует переданному значению. Если значение уже является объектом, конструктор вернёт это значение. При вызове как не конструктор, Object ведёт себя идентично коду new Object().
Преобразование в объект выполняется функцией Object():
// Shorthand property names (ES6)
const a = "foo", b = 42, c = {};
const o = { a, b, c };
// Shorthand method names (ES6)
const o = {
property([parameters]) {},
get property() {},
set property(value) {},
* generator() {}
...O
};
// Computed property names (ES6)
const prop = "foo";
const o = {
};
const methodName = "getFirstName";
const user = {
// в квадратных скобках может быть любое выражение,
// которое должно вернуть название метода
[methodName]() {
// вместо [methodName]: function() {
return "Anton";
}
};
user.getFirstName(); // Anton