- 프로퍼티와 메소드로 구성된 집합체
- 변경 가능한 값
const obj = {
num: 0, // 프로퍼티
// 메소드
increase: function () {
this.num++;
},
};
const person = {
name: "J",
};
Object
생성자 함수Object.create
메소드const obj = {
1: "value",
};
const person = {
firstName: "J",
"last-name": "Kim",
};
const key = "lastName";
const person = {
firstName: "J",
[key]: "Kim",
};
console.log(person); // {firstName: 'J', lastName: 'Kim'}
const person = {
name: "J",
name: "H",
};
console.log(person); // {name: 'H'}
객체에 묶여 있는 함수
const person = {
firstName: "J",
};
console.log(person.firstName); // 'J'
const person = {
firstName: "J",
"last-name": "Kim",
1: "value",
};
console.log(person["firstName"]); // 'J'
console.log(person["last-name"]); // 'Kim'
console.log(person[1]); // 'value'
undefined
를 반환함console.log(person.gender); // undefined
const person = {
firstName: "J",
"last-name": "K",
};
person.firstName = "H";
person["last-name"] = "L";
console.log(person); // {firstName: 'H', last-name: 'L'}
const person = {
firstName: "J",
};
person.lastName = "K";
console.log(person); // {firstName: 'J', lastName: 'K'}
const person = {
firstName: "J",
};
delete person.firstName;
console.log(person); // {}
cf) 존재하지 않는 프로퍼티를 delete
해도 에러가 발생하지 않음
const person = {
firstName: "J",
};
delete person.lastName;
console.log(person); // {firstName: 'J'}
const x = 1,
y = 2;
const obj = {
x,
y,
};
console.log(obj); // {x: 1, y: 2}
const key1 = "firstName";
const key2 = "lastName";
const person = {
[key1]: "J",
};
person[key2] = "K";
console.log(person); // {firstName: 'J', lastName: 'K'}
// ES5
const person = {
sayHi: function () {
console.log("Hi");
},
};
// ES6
const person = {
sayHi() {
console.log("Hi");
},
};
person.sayHi(); // Hi
cf) 메소드 축약 표현으로 정의된 메소드는 프로퍼티에 할당한 함수와 다르게 동작함