객체(Object) 메소드

0

javascript

목록 보기
6/8

Object는 정적(static) 메소드를 가진다.

[].reverse();		// 요소에 직접 실행시킬 수 있는 배열 메소드와 달리
// O

{}.assign();		// 요소에 직접 실행시킬 수 없다.
// X

Object.assign(target, sources...);

첫번째 인수인 target에 두번째~ 마지막 인수인 sources를 복사해서 병합한 값을 반환한다.
원본 객체가 변형된다.

const userAge = {
	name: 'erun',
  	age: 42
}
const userEmail = {
	name: 'erun',
  	email: 'erun@erun.com'
}

const result = Object.assign(userAge, userEmail);

console.log(result);
// {
//	name: 'erun',
//  age: 42,
//  email: 'erun@erun.com'
//}

console.log(userAge);
// {
//	name: 'erun',
//  age: 42,
//  email: 'erun@erun.com'
//}

console.log(result === userAge);
// true

값이 똑같아서 true가 아니고,
객체데이터의 메모리주소가 같기때문에 두 객체가 동일하다는 결과가 나왔다.
(데이터가 저장된 위치가 동일)

const a = { name: 007 };
const b = { name: 007 };

console.log(a === b)
// false

위 코드의 객체 a와 b는 값이 같지만 서로 다른 메모리 주소를 사용하기 때문에 같지 않다.

원본 객체를 변형하지 않고 병합된 새로운 객체를 생성하려면

target의 위치에 빈 객체를, 두 번째~ 마지막 위치에 병합하고자 하는 객체들을 넣어준다.

const result = Object.assign({}, userAge, userEmail);

console.log(result);
// {
//	name: 'erun',
//  age: 42,
//  email: 'erun@erun.com'
//}

console.log(userAge);
// {
//	name: 'erun',
//  age: 42,
//}

console.log(result === userAge);
// false

원본 객체를 복사하려면

target의 위치에 빈 객체를, 두 번째 위치에 복사하고자 하는 객체를 넣어준다.

const userAge2 = Object.assign({}, userAge);

console.log(userAge);
// {
//	name: 'erun',
//  age: 42,
//}

console.log(userAge2);
// {
//	name: 'erun',
//  age: 42,
//}

console.log(userAge === userAge2);
// false

userAge가 바라보고 있는 메모리주소가 있고,
이를 복사해서 새로운 메모리주소를 바라보는 userAge2를 생성했다.

Object.keys(user);

인수 객체의 key값을 배열로 생성해 반환한다.

const user = {
	name: 'erun',
  	age: 42,
  	email: 'erun@erun.com'
}
const keys = Object.keys(user);
console.log(keys);
// ['name', 'age', 'email']

객체의 특정 키 값을 반환하고 싶다면

const user = {
	name: 'erun',
  	age: 42,
  	email: 'erun@erun.com'
}
const keys = Object.keys(user);
console.log(keys);
// ['name', 'age', 'email']

// 배열의 인덱싱으로 값 가져오기
console.log(keys[2]);
// 'erun@erun.com'

// 객체의 인덱싱으로 값 가져오기
console.log(keys['email']);
// 'erun@erun.com'

객체의 값만 추출해 배열을 반환하고 싶다면

const values = key.map(key => user[key]);
console.log(values);
// ['erun', 42, 'erun@erun.com'];
profile
를 질투하는 그냥 개발자입니다.

0개의 댓글