원시 데이터 타입

원시 데이터 타입과 객체

데이터 타입은 크게 두가지로 구분할 수 있다.

객체와 객체가 아닌 것.

객체가 아닌 데이터 타입을 원시데이터타입(primitive type)이라고 한다.

레퍼 객체

var str = 'coding';
console.log(str.length); // 6
console.log(str.charAt(0)); // "C"

str.length 에서의 .Object access Operator 객체 접근 연산자이다.즉 . 앞에 오는 것은 객체라는 이야기다.

위에서 문자열은 객체가 아니지만 문자열에는 프로퍼티와 메소드가 존재하고 객체처럼 사용된다.

이는 문자열을 제어하려면 문자열을 객체처럼 사용해야 하기 때문이다.

원시데이터를 제어하기위해서는 원시데이터를 객체처럼 사용해야 할 경우가 있기 때문에 임시로 객체로 만들어준다.

var str ='cording' 이라고 선언하면 이 코드는 str = new String('coding') 이라는 임시 객체가 생성된다고 생각하면 된다. 그 객체의 사용이 끝나면 원래의 원시데이터 형식으로 돌아간다.

var str = 'coding';
str.prop = 'everybody';
console.log(str.prop); //undefined

str.prop 문자열에 .prop을 지정할때는 문자열을 객체화 시켜서 에러가 나진 않지만 그 직후에 문자열의 객체화가 종료되서 console.log(str.prop);를 하면 undefined이 뜬다.

원시데이터 타입을 객체처럼 사용할때 객체화가 되는 것을 wrapper object 래퍼객체라고 한다.

(원시데이터타입을 객체타입으로 감싼다는 뜻 )

이러한 과장이 자바스크립트에서는 자동으로 작동한다.

null과 undefinedsms 객체화가 되지 않고 타입 에러가 발생한다.

Discussion and feedback