2012-05-31 2 views
2
다섯 개 원시 자바 스크립트 데이터 유형 ( string, number, boolean, nullundefined), 처음 세 개의 연결 한 생성자의

: 구축 된 개체 개체 리터럴 래퍼생성자

new String("Hello!") 
new Number(40) 
new Boolean(true) 

. 특히 new String("Hello!") === "Hello!"false으로 평가됩니다.

해당 개체 리터럴과 다른 개체 래퍼를 생성하는 nullundefined 원시 데이터 형식에 대한 유사한 생성자가 있습니까?

+0

내가 정의하지 않은 생성자를 가질 수 있다고 생각하지 않는다 – Gavriel

답변

2

아니요, 존재하지 않으며, 그들이 나타내는 "가치"를 고려하면 이해가되지 않습니다.

는 사실을 무시하는 대해서 typeof 널 (null) === '객체'

According to MDN :

JavaScript automatically converts primitives and String objects, so that it's 
possible to use String object methods for primitive strings. 

당신이 영향을 미치는 방법을 호출하는 경우 인터프리터는 단지 클래스에 원시적 어떤 마법의 자동 포장을한다 프리미티브 (예 : charAt).

+0

사람들은 "typeof null == 'object''가 왜 필요한지 물어 보면"ECMA-262에서 그렇게 말하기 때문에 "나는 비난을 받는다. 다른 설명 – RobG

0

기본 유형에는 생성자가 없습니다. string, number 및 boolean에는 기본 유형을 래핑하는 Object 래퍼가 있습니다. 그게 왜 js의 String Object가 당신이 말한 ""것과 같지 않은지입니다. null 및 미정 도리의 원시적 형에는, 관련한 Object constructor가 없습니다.

+0

모든 함수가 객체이지만 모든 객체가 생성자가 될 수있는 것은 아니며 Function 객체 만 생성자가 될 수 있습니다. – RobG