본문 바로가기

Web[웹]/자바스크립트

Object 생성자의 메서드와 Object 프로토타입 메서드

1. Object.assign() - 객체를 병합하는 메서드

Object.assign(target, ...sources)

해당 메서드는 하나 이상의 원본 객체들로부터 모든 속성들을 대상 객체로 복사합니다.

첫번째 인자는 타겟으로, 그 뒤 인자부터는 타겟오브젝트에 병합될 객체입니다.

 

1
2
3
4
5
6
7
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let obj3 = { c: 3 };
 
var newObj = Object.assign(obj1, obj2, obj3);
console.log(obj1); // --> { a: 1, b: 2, c: 3 }
console.log(newObj); // --> { a: 1, b: 2, c: 3 }
cs

 

위 예제에서는 obj1값 자체가 변경이되어, obj1과 newObj가 같아졌습니다. 그래서 항상 값을 보존하면서, 새로운 객체를 반환해야한다면, 항상 아래와 같이 첫번째 인자로 빈 객체를 줘야합니다.

 

1
2
3
4
5
6
7
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let obj3 = { c: 3 };
 
var newObj = Object.assign({}, obj1, obj2, obj3);
console.log(obj1); // --> { a: 1 }
console.log(newObj); // --> { a: 1, b: 2, c: 3 }
cs

 

2. Object.keys(), Object.values(), Object.entries() - 키, 값, 키-값 배열을 반환

 

Object.keys(obj), Object.values(obj), Object.entries(obj)

 

1
2
3
4
5
6
7
8
9
let score = {
   science: 80,
   math: 90,
   coding: 100
}
 
console.log(Object.keys(score)); //--> ["science", "math", "coding"]
console.log(Object.values(score)); //--> [80, 90, 100]
console.log(Object.entries(score));//--> [["science", 80], ["math", 90], ["coding", 100]]
cs

 

3. Object.prototype.hasOwnProperty() - 객체가 특정 프로퍼티에 대한 소유여부 반환

obj.hasOwnProperty(prop)
1
2
3
4
5
6
7
8
9
10
let obj = {
   a: "one",
   b: "two",
   c: "three",
   d: "four" 
};
 
obj.hasOwnProperty("a"); // --> true
obj.hasOwnProperty("b"); // --> true
obj.hasOwnProperty("e"); // --> false
cs