Object Basic
- warrior[nickname] 인 경우 JS 처리 순서
1. JS가 nickname에 값이 있는지 확인하고
2. warrior 객체에 nickname 속성이 있는지 확인
3. 속성이 있다면 그 속성의 값을 조회하고
4. 없다면 undefined를 리턴함
객체 값 조회
- Dot notation
- Square Bracket notation
- in 연산자
- 'key' in obj -> boolean 타입의 return값
- for..in
- 객체의 key값을 하나씩 반환(배열로 반환 아님)
- Object.keys()
- Object.values()
- Object.entries
- for(let [key,value] of Object.entries(obj)).. -> return값은 [key,valeu] 쌍의 배열을 반환함.
- 객체엔 for..in , 배열은 for..of -> 다만 Object.entries를 사용 시 for..of 사용
- object 자체의 길이 조회는 undefined를 리턴함. 조회하려면 키의 갯수 혹은 값의 갯수를 조회하여 리턴
객체 값 삭제
factory function
- scope 안에 같은 이름의 변수가 있다면 객체 생성 시 colon 과 value 생략 가능
const userName = 'echo';
const avatar = 'echo.png';
const user = {
userName,
avatar
};
console.log(user);
const userName = 'echo';
const avatar = 'echo.png';
const user = {
userName,
avatar,
setUserName (userName) {
this.userName = userName;
return this;
}
};
console.log(user.setUserName('Foo').userName);
Object method, this
- object method는 객체의 속성으로 정의된 함수를 말함.
- 'this'는 method를 호출하는 시점에 method를 호출한 객체를 말함.
Object.assign()
- 출처 객체로부터 대상 객체로 속성을 복사할 때 사용
Object.assign(target,...source)
-> source 객체의 속성을 target 객체로 복사함(추가된다는 느낌,동일한 속성 존재 시 덮어씀.)
- 반환값 -> 대상 객체 . 즉, 복사 후 target 객체
arguments
- arguments 객체는 함수가 호출될 때 전달된 인수에 해당하는 Array 형태의 객체
함수가 선언된 순간 arguments 객체를 갖고 있다고 생각
- Array 는 아니고 length 속성만 사용 가능(pop,push..는 사용 불가) 따라서
typeof arguments === 'object'
이고 Array.isArray(arguments) === false;
- arguments 객체는 모든 함수 내에서 이용 가능한 지역 변수.
- 함수 호출 시 전달된 인자를 갖고 있으며 Array형태이기 때문에 index를 이용해 접근할 수 있음.
- arguments 객체를 array로 변경하는법
Array.from()
메서드 사용
- 유사 배열 객체나 반복 가능한 객체를 얕게 복사해 새로운 Array 객체를 만 듦.
- Array.from(arrayLike); -> 반환 값은 새로운 Array
- 전개 연산자 사용 -> [...arguments] -> array로 변경됨.