- 객체의 생성 방법
1. Object() 생성자 이용 : var foo = new Object();
2. 객체 리터럴 방식 이용 : var foo = { "property": value }
3. 생성자 함수 이용 : 객체를 생성하는 생성자 함수를 이용한 개체 생성
- 객체의 프로퍼티 읽고 쓰기
1. [ ] 를 이용한 접근 => 프로퍼티명을 '문자열' 형태로 대괄호에 담아 접근. 프로퍼티명을 그대로 입력하면 그 이름의 변수 값을 toString() 으로 바꾸어 접근하려고 시도하므로 문제가 발생할 수 있다.
프로퍼티명에 변수명으로 쓸 수 없는 특수문자가 있는 경우,대괄호를 이용한 접근만 가능하다. ('-' 등, 책에서는 프로퍼티명이 '표현식' 이거나 '예약어' 일 경우라고 설명하고 있다.)
또 변수의 값을 프로퍼티명으로 하여 접근하는 경우에도 대괄호를 이용한 접근만 가능하다.
2. '.' 을 이용한 접근 => . 우측의 단어를 프로퍼티명으로 보고 접근한다.
+ for in 문을 통한 프로퍼티 접근
- 객체의 프로퍼티 삭제
delete 연산자를 이용한다. delete 연산자는 객체의 프로퍼티를 삭제할 뿐, 객체는 삭제하지 못함에 주의. (오류 안띄움)
삭제에 성공한 경우 true, 실패한경우 false 를 리턴한다. (=> 뭔가 함수같다. 사실 저런 연산자도 함수 아닐까?)
(=> 콘솔에 찍어서 객체를 만드니까 객체를 생성한 후에 undefined 를 리턴하는 걸로 봐서 var 도 어쩌면 변수를 생성하는 연산자의 역할로서 일종의 함수가 아닐까 싶은 생각도 든다.)
- 객체(참조 타입)의 특성
객체는 기본 타입과 달리 모든 연산이 참조값으로 처리된다.
기본 타입과 참조 타입의 연산 차이를 보기 좋은 예시로서 대입연산이 있다.
변수 c 에 변수 a 의 값을 대입하고, c의 v 프로퍼티 값을 변경하였더니 a의 v 프로퍼티 값도 같이 변경되었다.
즉 a, c 는 모두 같은 객체를 가리키고 있었다. 참조변수는 생성된 객체를 가리키는 참조값을 저장하고 있다.
따라서 두 참조 변수의 비교도 '객체의 프로퍼티 값' 이 아니라 각 참조변수가 가리키고 있는 '참조값' 을 비교한다.
함수 인자로 값을 넘길 때도, 참조변수는 참조값을 넘기기 때문에, 함수 내에서 객체 프로퍼티의 수정이 가능하다.
반면 기본타입은 값을 복사해서 넘기기 때문에 함수 내에서 값의 수정이 불가능하다.
전자를 참조에 의한 호출 (call by reference), 후자를 값에 의한 호출(call by value) 라고 한다.
'독서 > Inside Javascript' 카테고리의 다른 글
[Inside Javascript] 6. 기본타입과 표준메서드, 연산자 (0) | 2022.06.12 |
---|---|
[Inside Javascript] 5. 배열 (2) | 2022.05.09 |
[Inside Javascript] 4. 프로토타입 개념 (0) | 2022.04.06 |
[Inside Javascript] 2. 자바스크립트의 데이터타입 (0) | 2022.03.25 |
[Inside Javascript] 1. 자바스크립트의 핵심 개념 (0) | 2022.03.21 |