객체란 배열과 마찬가지로 여러 데이터를 담을 수 있는 그릇을 얘기한다.
다만 차이점은 자동으로 위치가 지정되는인덱스
와 다르게 직접키
값을 정할 수 있다는 것이다.
객체의 프로퍼티로 함수가 올 수도 있는데, 이러한 프로퍼티를 메서드(method)라고 한다.
우리가 메서드를 직접 만들 수 있다는 것이다.
: 객체를 지정하는 방법은 컬리브 브라켓{}
을 사용한다.
const profile = { name: 'ash', old: 35 };
const profile = {};
profile['name'] = 'ash';
profile['old'] = 35;
profile['name']
는 프로필이라는 객체의 name이라는 키에 엑세스 하라는 의미이다.const profile = new Object()
const profile = {}
와 같다.: 객체의 프로퍼티에 접근할 수 있는 방법은 .
을 이용하는 방법이 있다.
'hello'.length; // Returns 5
let spaceship = {
homePlanet: 'Earth',
color: 'silver'
};
spaceship.homePlanet; // Returns 'Earth',
spaceship.color; // Returns 'silver',
.
을 이용해서 키
에 접근할 수 있다.객체명.키
으로 접근하면 값
을 반환한다.: 두번째 프로퍼티(키)에 접근하는 방법은 []
을 이용하는 방법이 있다.
let spaceship = {
'Fuel Type': 'Turbo Fuel',
'Active Duty': true,
homePlanet: 'Earth',
numCrew: 5
};
spaceship['Active Duty']; // Returns true
spaceship['numCrew']; // Returns 5
spaceship['!!!!!!!!!!!!!!!']; // Returns undefined
['']
스퀘어 브라켓을 이용해서 키
에 접근할 수 있다.객체명['키']
으로 접근하면 값
을 반환한다.''
이 없는 경우 ''
을 스퀘어 브라켓 안에 넣어서 접근해 주어야 한다. : 객체는 재할당이 가능하다.
const spaceship = {
'Fuel Type': 'Turbo Fuel',
homePlanet: 'Earth',
mission: 'Explore the universe'
};
delete spaceship.mission; // Removes the mission property
: 객체에 저장된 데이터가 함수일 경우 그것을 메서드라고 한다.
프로퍼티는 객체가 가진 것
이고, 메서드는 객체가 하는 것
이라고 생각하면 편하다.
const MethodTest = {
newKey: function () {
console.log('블라블라')
}
};
MethodTest라는 객체
에 newKey라는 키
의 값은 함수
가 된다.const MethodTest = {
newKey () {
console.log('블라블라')
}
};
MethodTest.newKey();
함수명.키()
로 호출한다.: 객체 안에는 또 다른 객체를 가질 수 있다.
.
과 []
을 여러개 사용하여 접근하고 싶은 값을 추출할 수 있다.
: 객체에는 내장되어 있는 메서드들이 존재한다. 그 종류와 용도를 알아보자.
: 객체가 가진 모든 키값을 배열에 담에 반환하는 메서드
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.keys(object1));
// expected output: Array ["a", "b", "c"]
: 키와 값을 모두 배열에 담아 반환하는 메서드
const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
: 하나 이상의 객체로 부터 키-값을 복사할때 사용한다.
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target); // output: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget); // output: Object { a: 1, b: 4, c: 5 }