В ES6 добавлен синтаксис который упростил работу с простыми объектами.
let firstName = 'Bill',
lastName = 'Gates',
email = 'billgates@microsoft.com';
let person = {
firstName,
lastName,
email
};
console.log(person); // Object { firstName: "Bill", lastName: "Gates", email: "billgates@microsoft.com" }
let person = {
firstName,
lastName,
email,
sayHello: function() {
console.log(`Hi my name is ${this.firstName} ${this.lastName}`);
}
}
можно написать
let person = {
firstName,
lastName,
email,
sayHello() {
console.log(`Hi my name is ${this.firstName} ${this.lastName}`);
}
};
let property = 'lastName';
let person = {
[property]: 'Bill'
};
Или другой пример:
function createCar(prop, value){
return {
[prop]: value,
['get' + prop](){
return this[prop];
}
};
}
console.log(createCar('vin', 1)); // Object { vin: 1, getvin: createCar/<() }
Можно создавать специальные свойства которые внутри объекта вглядят и работают как методы, а снаружи выглядят и работают как свойства. Эти свойства называются get и set.
let person = {
firstName,
lastName,
email,
get fullName() {
return this.firstName + ' ' + this.lastName;
},
set fullName(value) {
this.firstName = value;
}
};
console.log(person); // Object { firstName: "Bill", lastName: "Gates", email: "billgates@microsoft.com", fullName: Getter }
person.fullName = 'Jon';
console.log(person); // Object { firstName: "Jon", lastName: "Gates", email: "billgates@microsoft.com", fullName: Getter }