검색결과 리스트
글
자바스크립트는 객체 중심 언어이다.
그래서 자바스크립트는 항상 변수를 만들고, 그 변수에 인스턴스(객체형 혹은 자료형 변수)를 생성하여 담아서 이용하는 것으로 부터 시작된다.
자바스크립트의 데이터 타입의 종류는 요약하면 다음과 같다.
-숫자(number)
ex ) var no = new Number(); (기본 값은 0)
-문자열(string)
ex ) var str = new String();
-참거짓(boolean)
ex ) var isTrue = new Boolean();(기본 값은 false)
-객체(object)
ex ) var obj = new Object();
-함수(function)
ex ) var func = new function(){};
-배열(array)
ex ) var arr = new Array();
-정규식(regexp)
ex ) var reg = new RegExp();
그런데, 이 객체들을 생성 할 떄
우리는 생성 연산자 'new'를 이용하여 생성 한 후, 그 다음 라인에
생성한 객체(혹은 자료)에 대한 정보를 추가로 담는 식으로 활용한다.
여기까지가 자바스크립트에서의 변수의 유형과 생성 방법이다.
그런데, 자바스크립트와 같은 객체 중심, 혹은 지향 언어에서는 객체의 리터럴(literal) 표기법을 지원하게 되는데,
이 리터럴이라는 것의 사전적 의미를 보면 '문자 그대로의' 라는 의미이다.
즉, (위에서 예제를 살펴봤던 순서대로) 자바스크립트에서 리터럴 표기법을 살펴보면 다음과 같다.
var no=3;
var str='';
var isTrue=true;
var obj={nation:'korea',age:15};
var func=function(){
}
var arr=[];
var reg=/[a-z]/g;
사실, 우리가 흔히 써오던 변수를 선언하고, 데이터를 담는 일반적인 방식이다.
그런데, 이렇게 쓰면 무언가 정규적이지 않고, 비 공식적인 것 같으며, 심지어
성능을 저하하는 코딩을 하고있다는 느낌이 들기도 한다.
위의 방식처럼 'new' 연산자를 이용하여 먼저 객체를 만들고, 그 값을 수정 해 나가는 것이
정규적이고, 절차를 지키는 방법이며, 성능 향상에 기여하는 것처럼 보인다.
하지만 우리가 생각 한 것과 다르게 리터럴 표기법은 비 정규적인 (흔히 말하는 야매)도 아니고,
성능 저하를 불러오지도 않으며, 코드는 더 짧으며, 엔진의 해석 속도 면에서도 오히려 더 빠르다.
몇가지 장점이 있는데, 우선 코드가 더 짧으며, (몇 바이트, 몇 라인이라도 줄지 않겠는가?),
자바스크립트 인터프리터의 해석분량도 줄어들며,(데이터를 생성 함과 동시에 담는다. 위의 생성방식으로는 먼저
생성을 한 후, 데이터를 한땀한땀 담아야 한다.) 더 쉽고, 더 빠르다.(실제로 소위 말하는 모던브라우저들의 엔진에서는
자바스크립트의 리터럴 표기법에 대한 최적화가 되어있다고 한다.)
조금은 복잡한 내용이지만 동적 데이터 접근에 대한 호환성도 제공한다.
(이는 new 연산자를 이용하여 인자를 동적으로 제공 할 시 문제가 생기기도 한다는 이야기가 있다.)
어쨌든 결론은 '생성자 사용을 지양하고 리터럴 표기법을 사용하자'라는 것이다.
'JavaScript 이야기' 카테고리의 다른 글
null과 undefined의 차이 (3) | 2013.01.13 |
---|---|
자바스크립트로 이미지 새로고침 하기 (0) | 2013.01.05 |
자바스크립트 키코드 (0) | 2012.12.14 |
자바스크립트에서 false를 의미하는 것, 그리고 true를 의미하는것. (0) | 2012.11.17 |
자바스크립트에서 변수 타입에 관한 몇가지 알짜상식 (0) | 2012.11.17 |
RECENT COMMENT