-
객체 메소드JavaScript 2022. 9. 30. 02:11
Object.assign()
// Object.assign() // 객체 복제 const user = { name : 'Mike', age : 30, [1+4]:5, // 이렇게 식 자체를 넣는 것도 가능하다. ["안녕"+"하세요"] : "Hello" } const cloneUser = user; // 이러면 복제가 될까? 안된다! //user 변수에는 객체 자체가 들어가 있는게 아니다. //객체가 저장되어 있는 메모리의 주소, 객체에 대한 참조값이 저장된다. //즉, 이런 클론유저는 객체가 복사되는게 아니라 참조값만 복사되는 거다. console.log(user.name) // 'Mike' cloneUser.name = 'Tom'; console.log(user.name) // 'Tom' // 아래에서는 user.name도 바뀐다! //하나의 객체를 두 변수가 접근하고 있는 것이다. const newUser = Object.assign({}, user) // 첫번째 빈 객체는 초기값, 두번째 매개변수부터 들어오는 객체들이 초기값에 병합된다. // 빈객체에 user가 들어오므로, 복제되는 거지. newUser.name = 'Anakin' console.log(user.name); // Tom // 이제는 newUser의 이름을 바꿔도 원래 user이름에 변화가 없다. const cloneUser2 = Object.assign({gender:'male'},user); // 성별값이 있는 객체가 user를 병합한다. //name, age 까지 총 5개의 property를 가지게 된다. console.log(cloneUser2) //{ '5': 5, gender: 'male', name: 'Tom', age: 30, '안녕하세요': 'Hello' } const cloneUser3 = Object.assign({name:'Luke'},user); //만약 병합을 하는데, key 가 같다면 어떻게 될까? console.log(cloneUser3) // { '5': 5, name: 'Tom', age: 30, '안녕하세요': 'Hello' } 걍 덮어씌운다.
// 여러 객체 병합 가능 const user = { name : 'Mike' } const info1 = { age : 30, } const info2 = { gender : 'shemale' } const Anakin = Object.assign(user, info1, info2) // user에 info1, info2 병합 console.log(Anakin) // { name: 'Mike', age: 30, gender: 'shemale' }
Object.keys() Object.values() Object.entries() Object.fromEntries(배열)
const user = { name : 'Mike', age : 30, gender : 'male', } console.log(Object.keys(user)) // Object.keys 메서드는 객체 property의 key를 배열로 반환한다. //[ 'name', 'age', 'gender' ] console.log(Object.values(user)) // 반대로. Object.values 메서드는 value를 배열로 반환한다. //[ 'Mike', 30, 'male' ] console.log(Object.entries(user)) // key value 배열 반환 //[ [ 'name', 'Mike' ], [ 'age', 30 ], [ 'gender', 'male' ] ] const arr = [ ["name", 'Mike'], ["age", 30], ["gender", 'male'], ] console.log(Object.fromEntries(arr)) // 반대로, key value 배열을 객체로 // { name: 'Mike', age: 30, gender: 'male' } const arr2 = [ ['mon', '월'], ['tue', '화'], ]; const result = Object.fromEntries(arr2); console.log(result); // { mon: '월', tue: '화' }
어떤 key가 들어올지 모르는 객체를 만들어야 할 때
// 어떤게 key 가 될지 모르는 객체를 만들 때 유효하다!!! function makeObj(key, val){ return { [key] : val } } const obj = makeObj('나이', 33); // 요렇게 위의 함수를 사용할 수 있다. console.log(obj) // { '나이': 33 } const obj2 = makeObj('이름', 33); // 요렇게 위의 함수를 사용할 수 있다. console.log(obj2) // { '이름': 33 }
'JavaScript' 카테고리의 다른 글
프로미스 (0) 2022.10.05 심볼 (0) 2022.09.30 계산된 프로퍼티 computed property (0) 2022.09.30 생성자 함수 (0) 2022.09.30 문자열과 숫자에 접근하는 방법들3 : 정규표현식 (0) 2022.09.28