2013-05-28 5 views
21

JavaScript에서는 다음과 같은 방법으로 문자열을 선언 할 수 있습니다.JavaScript에서 프리미티브 문자열 (문자열 리터럴)을 "인스턴스화"하는 방법

var a = "Hello World"; 
var b = new String("Hello World"); 

하지만은 문자열의 인스턴스가 아닌 ...

console.log(a instanceof String); //false; 
console.log(b instanceof String); //true; 

그래서 어떻게 유형 또는 " instanceof"문자열 리터럴을 찾을 수 있습니까?

JavaScript는 모든 문자열 리터럴에 대해 new String()을 강제로 생성 할 수 있습니까?

답변

46

사용은 새로운 캐릭터를 만들 수 new String()을 쓸 필요가 없습니다. var x = 'test'; 문을 쓸 때 x을 원시 데이터 형식의 문자열로 만듭니다. 객체 리터럴과 마찬가지로 사용자 정의 속성을 x에 연결할 수 없습니다. 즉. x.custom = 'abc';x.custom은 정의되지 않은 값을 제공합니다. 따라서 우리의 필요에 따라 객체를 생성해야합니다. new String()은 문자열이 아닌 typeof() Object로 개체를 만듭니다. 이 개체에 사용자 지정 속성을 추가 할 수 있습니다.

5

대신 typeof을 사용하고 결과 문자열을 비교하면됩니다. 자세한 내용은 docs을 참조하십시오. typeof "foo" === "string" 대신 instanceof.

+1

그것은 방법이 아닙니다! – Bergi

+0

doc 링크를 제공해 주셔서 감사합니다. 하지만 [instanceof] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof)와 마찬가지로 적절합니다. "instanceof 연산자는 객체의 프로토 타입 체인에 constructor.prototype이 있는지 테스트합니다. . " – jpaugh

2