2022.04.26
자바스크립트 객체(Object)
객체 속성은 열거자enumerable or 비열거자nonenumerable로 정의할 수 있으며
탐색, 검색, 반복할 수 있는 빌트인(built-in)수단(메서드또는문)들을 제공
Object 메서드중 prototype이 붙어있지 않은건 정적(static)메서드라고함
즉 객체리터럴방식을 직접적으로 사용 불가능 ( {}.assign() )
Object.assign()
열거할 수 있는 하나 이상의 출처 객체로부터 대상 객체로 속성을 복사 할 때 사용
const target = { a: 1, b: 2, c: 3}
const source = { a: 1, b: 4, c: 6}
// target이 대상객체, source가 출처객체
const res = Object.assign(target, source)
// source 값을 target에 복사
console.log(target) //{a: 1, b: 4, c: 6}
그 값이 res에 입력됨
console.log(res) //{a: 1, b: 4, c: 6}
console.log(target === res) //true(배열, 객체, 함수는 참조형데이터 가변성)
//새로운 객체데이터를 만듦(=내용이 비어져있는 개체데이터를 생성)
//빈 객체리터럴을 넣어주면 대상객체가 손상되지 않음
//const res = {} 이거랑 아래{}부분에 res쓴거랑 같당
const other = Object.assign({}, target, source)
console.log(target) //{a: 1, b: 2, c: 3}
console.log(other) //{a: 1, b: 4, c: 6}
console.log(other === target) //false
Object.keys()
객체데이터의 key값을 새로운 배열로 만들어 줌
const target = {
a: 1,
b: 2,
c: 3
}
const keys = Object.keys(target)
console.log(keys) //['a', 'b', 'c']
// 객체데이터도 인덱싱방법을 제공
console.log(target['a']) //1
// map이라는 Array메서드
const values = keys.map( function(key) {
return target[key]
} )
console.log(values) // [1, 2, 3]
const userA = {
name: 'Sunny',
age: 92,
isVaild: true
}
const res = Object.keys(userA)
//객체 key들을 배열로 내놓음
console.log(res) //['name', 'age', 'isVaild']
// 메소드체이닝
Object.keys(userA).forEach(item => {
console.log(userA[item])})
// 흔적을 남기기때문에 앞에 res를 지워줘도 될거같아요 res가 그 값을 받기때문에
res.forEach( item => {
// userA.name //점표기법
// userA.['name'] //대괄호 표기법
console.log(userA[item])
})
Object.values()
객체의 value값 반환
const userA = {
name: 'Sunny',
age: 92,
isVaild: true
}
const res = Object.values(userA)
console.log(res) //['Sunny', 92, true]
'프론트엔드 > JavaScript' 카테고리의 다른 글
자바스크립트 for문과 while문 (0) | 2022.05.15 |
---|---|
자바스크립트 구조분해할당과 전개연산자 (0) | 2022.04.28 |
자바스크립트 날짜와 시간 (0) | 2022.04.27 |
자바스크립트 배열(Array)데이터 (0) | 2022.04.25 |
자바스크립트 숫자(Number)데이터, Math (0) | 2022.04.25 |