[Chapter 3] 객체
- 객체는 변형 가능한 속성들의 집합. 객체는 그저 속성을 모아놓은 것이다.
(숫자, 문자, 불리언, null, undefined 를 제외한 값들은 모두 객체다, 배열, 함수, 정규표현식 등은 모두 객체!)
- 객체의 속성명은 문자열이면 모두 가능하다. 빈 문자열도 가능.
- 속성값은 undefined를 제외한 모든 값이 사용가능
- 자바스크립트 객체는 클래스가 없지만, 다른 객체에 상속하게 해주는 프로토타입(prototype) 이 있다.
이 특성을 잘 활용하면, 객체를 초기화하는 시간과 메모리 사용을 줄일 수 있다.
example ) 자동차 객체화 예제
//자동차 객체화 var car = { 'color' : 'black', 'model' : 'avante', 'year' : '2010', 'wheel' : 4 , 'drive' : function() { alert('Brrr~'); } }; //car 객체에 name 추가 car['name'] = '붕붕이'; //개발자도구를 활성화 -> console탭을 확인하세요 console.dir(car); //자동차 시동 걸기 -> 객체안에 들어가는 함수를 '메소드' 라고 한다 car.drive();
//console.dir 출력결과
02] 속성값 읽기
- 대괄호 [] 로 둘러싸거나, 마침표 . 표기법으로 읽기 가능
- 존재하지 않는 값을 읽으려고 하면 undefined 를 반환해준다
- || 연산자를 사용하여 기본값을 지정해 줄 수 있다
03] 속성값의 갱신
- 객체의 값은 할당에 의해 갱신된다. 이미 객체안에 존재하면 해당 속성의 값이 변경된다.
04] 참조
- 객체는 참조 방식으로 전달된다. 복사되는게 아니다.
example)
05] 프로토타입(Prototype)
- 자바스크립트의 모든 객체는 자신의 부모 역할을 하는 객체(Object)와 연결 되어있다.
- Object.prototype 에는 toString(), valueOf() 등과 같은 모든 객체에서 호출 가능한 기본 내장 메서드가 포함 되어있다.
이를 상속받은 객체에서 Object.prototype 에 있는 다양한 메서드를 마치 자신의 속성인것 처럼 사용 할 수 있다.
- console.dir() 로 지정된 객체의 프로토타입을 쉽게 확인 가능
06] 리플렉션
- 변수의 타입을 체크하고 객체의 구조를 탐색하는 과정을 리플렉션 이라 한다.
- 쉬운 방법으로 typeof 연산자를 사용하여 객체에 어떤 속성들이 있는지 확인 할 수 있다
- 원하지 않는 속성을 배제하기 위해 hasOwnProperty 메소드를 사용하는 방법이 있다.
(hasOwnProperty 메소드는 객체에 특정 속성이 있는지 확인해서 true/false 값을 반환해주는 메소드로, 이 메소드를 사용하면 프로토타입 체인을 바라보지 않는다.)
07] 열거(Enumeration)
- for in 구문을 사용하여 객체에 있는 모든 값의 속성 이름을 늘어놓을 수 있다.
08] 삭제
- delete 를 사용하여 객체의 속성을 삭제 가능하다.
(delete는 프로토타입 연결상에 있는 객체들은 접근하지 않습니다.)
09] 촤소한의 전역변수 사용
- 전역변수의 잦은사용은 프로그램의 유연성을 약화하기 때문에 가능하면 피하는것이 좋다.
전역변수 사용을 최소화 하는 방법중 하나로, 먼저 전역변수 하나를 생성 한 후
선언한 변수를 다른 전역변수를 위한 컨테이너로 사용하는 방법이 있다.
- 이러한 방법으로 전역변수를 이름 하나로 관리하면
다른 라이브러리들과 연동할 때 발생하는 문제점을 최소화 할 수 있다.
- 전역변수 사용을 줄이는데 효과적인 방법으로 클로저 사용이 있는데 그건 나중에 서술..
'Web > Javascript' 카테고리의 다른 글
상속 (0) | 2018.02.27 |
---|---|
콜백, 모듈, 커링, 메모이제이션 (0) | 2018.02.27 |
함수 - (스코프, 클로저) (0) | 2018.02.26 |
함수 (0) | 2018.02.26 |
자바스크립트 기본, 타입, 함수 (0) | 2018.02.26 |
댓글