object는 한 변수에 한값만 할당하는 primitive 타입과 달리
여러 데이터를 할당해 사용할수 있는 타입이다.
여러데이터를 { key : value } 형태로 할당할수 있고 . 을 통해 접근한다.
- dynamic typing
javascript는 dynamic typing 언어이기 때문에, object 선언시에 만들어놓지 않은 key에도 값을 할당하고 삭제할수있다.
sw에 hasjob 인 key가 없음에도 값이 출력되었다.
- computed properties ( 계산된 프로퍼티 )
object에 할당한 변수들에 대해 접근하는 또 다른 방법으로 computed properties가 있다.
다음과 같이 object['key'] 로 접근하며, key값에 string형태를 넣어야 한다.
이것도 동일하게 선언되지 않은 key값에 대해 값을 할당할수 있다.
이렇듯 key 값에 stirng type이 들어갈수있어, print_com 함수처럼 key값에 어떤것이 들어올지 모르는 상황에
매우매우 유용하게 사용된다.
- object 생성 함수들
만약 나이, 이름을 가진 여러 사람들을 object로 선언하고 싶다면 다음과 같이 선언할수 있다.
이떄 중복되는것이 싫어 아예 함수를 하나 만들어 버린다면 Person() 함수처럼 만들어 값을 받아 할당하여 object를 반환해 주도록 할수 있는데, 이모양은 클래스와 매우 비슷하다.
클래스가 나온 이후에는 Person_short() 함수와 같이 this.name, this.age 처럼 선언하면 return 값이 자동으로 설정되어 똑같이 object 를 생성해주는 함수로 사용할수 있다.
- in operator
in operator로 해당 key가 존재하는지 알수있다.
person1에 존재하는 name , age에대해서는 true, 존재하지않는 tel 에 대해서는 false를 뱉는다.
- for에서의 in operator
for문으로 어떤 obj나 array를 순회할때 중간처럼 표현할때가 많은데
in이나 of를 써서 간편하게 만들수 있다.
예시처럼 in 은 object에 사용해 key값을 순회하게 할수있고,
of 로 배열을 순회해 i 라는값이 필요없이 배열을 순회할수있다.
- cloning
object는 할당시 실제 메모리의 참조를 가지는것이기 떄문에, 다음과같이 object를 대입연산자에 넣어도
참조 자체가 복사되어, 두 변수가 하나의 object를 공유하게 된다.
예시처럼 user2.name에 bob을 넣고, user.name을 출력하면 bob이 출력되는것을 볼수있다.
값을 복사하기 위해 object를 복사하는 assign 함수가 있다.
- assign
모든 object는 javascript자체 클래스인 Object 를 상속받아 만들어져 assing 함수를 사용할수 있는데,
사용법은
assign( target , source ) 으로
target에 할당할 변수 , source에 복사하고자 하는 변수를 넣으면 된다.
예시와 같이 사용할수 있고 { } 를 바로 할당해 사용할수도 있다.
'javascript' 카테고리의 다른 글
[javascrip 기본] javascript의 class, 생성자 , method (0) | 2023.08.23 |
---|---|
[javascript 기본] javascript 함수의 선언과 표현 (1) | 2023.08.20 |
[javascript 기본] javascript의 연산자 / Dynamic typing (0) | 2023.08.16 |
[javascript 기본] 2. 다양한 data type과 number, string, Symbol, undefined, null (0) | 2023.08.16 |
[javascript 기본] 1. let과 const 그리고 var (0) | 2023.08.14 |