JS-Object
- prototype이 붙어있지 않은 메소드는 정적(static) 메소드
- 정적메소드는 {}.메소드 처럼 직접적으로 사용할 수가 없다.
Object.assign()
- const returnedTarget = Object.assign(target, source)
- target이라는 객체에다 source라는 객체를 병합해서 반환한다
- target의 중복되는 부분은 source부분으로 덮어씌워진다
1 | const target = { a: 1, b: 2 }; |
1 | console.log(target === returendTarget) |
같은 메모리 주소를 참조하고 있기때문에 true이다.
1 | const a = { k : 123} |
생긴건 같지만 서로 다른 메모리 주소를 참조하고 있기때문에 false이다
새로운 객체 데이터를 만들고 싶다면?
- 출처(source) 객체는 여러개 작성할 수 있다.
- 첫 번째 인수로 빈 객체리터럴을 작성한다.새로운 객체를 반환했기 때문에 target과 returnedTarget은 다른 객체이다.
1
2
3
4
5
6
7const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign({},target, source);
console.log(target === returnedTarget)
// false
Object.keys()
오브젝트의 key값이 Object.keys를 통해서 key값만 추출되어 새로운 배열데이터로 만들어진다
1
2
3
4
5
6
7
8const user = {
name: 'Oj',
age: 85,
email: 'sacultang@gmail.com'
}
const keys = Object.keys(user)
console.log(keys)
// ['name', 'age', 'email']객체데이터의 인덱싱 방법
배열처럼 [인덱스번호]가 아닌 [‘객체데이터의 프로퍼티 이름(key)’]1
2
3
4
5
6
7
8
9const user = {
name: 'Oj',
age: 85,
email: 'sacultang@gmail.com'
}
console.log(user['email']) // 인덱싱 방법
// sacultang@gmail.com
console.log(user.email) // 점표기법
// sacultang@gmail.com객체데이터 인덱싱 활용
1
2
3
4
5
6
7
8
9const user = {
name: 'Oj',
age: 85,
email: 'sacultang@gmail.com'
}
const values = keys.map(key => user[key])
console.log(values)
// ['Oj', 85, 'sacultang@gmail.com']