Written by
JJoo
on
on
원시 데이터 타입
원시 데이터 타입과 객체
데이터 타입은 크게 두가지로 구분할 수 있다.
객체와 객체가 아닌 것.
객체가 아닌 데이터 타입을 원시데이터타입(primitive type)이라고 한다.
- 숫자
- 문자열
- 불리언(true/false)
- null
- undefined
레퍼 객체
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 래퍼객체라고 한다.
(원시데이터타입을 객체타입으로 감싼다는 뜻 )
이러한 과장이 자바스크립트에서는 자동으로 작동한다.
- 숫자 = Number 객체
- 문자열 = String 객체
- 불리언(true/false) = boolean 객체
- null = X
- undefined = X
null과 undefinedsms 객체화가 되지 않고 타입 에러가 발생한다.
Discussion and feedback