차이

2011-12-28 2 views
7

가능한 중복 :
Difference between the javascript String Type and String Object?차이

쓰기 방화범이 간단한 코드 : 당신이 보는 무엇

console.log(new String("string instance")); 
console.log("string instance"); 

is :

enter image description here

왜 두 개의 console.log() 호출이 서로 다른 결과를 출력합니까? 왜 문자열 리터럴은 String 개체를 통해 문자열을 만드는 것과 같지 않습니까? 그것은 방화범 표현 스타일입니까? 아니면 그들은 자연이 다른가요?

+0

포스트를 방문하시기 바랍니다 http://stackoverflow.com/questions/2051833/javascript-string-type-and-string-object의 차이점 – Ravia

+0

-1 명백한 중복 –

+2

@ TomalakGeret'kal 중복은 downvotes를 보증하지 않으며, 단지 중복으로 닫을 수 있습니다. 당신은 대리인이 있거나 그냥 지적하면 다른 사람이 나타납니다. – Davy8

답변

6

그들은 다릅니다. 문자열 리터럴은 원시 값이지만 "String"인스턴스는 객체입니다. 기본 문자열 유형은 필요한 경우 자동으로 String 객체로 승격됩니다.

마찬가지로 숫자 프리미티브 및 "번호"인스턴스와 부울 프리미티브 및 "부울"인스턴스가 있습니다.

+1

String 객체에서 문자열 리터럴을 얻으려면 String 객체에서'toString()'함수를 호출하면됩니다. 예를 들어,'new String ("bork") === "bork"'는 false이고,'new String ("bork"). toString() === "bork"'는 참입니다. 오, 자바 스크립트 ... –

+0

그리고이 "프로모션"은 어떻게 발생합니까? – JohnMerlino

2

new String("...") 문자열 개체을 반환합니다.

"..."프리미티브을 반환합니다.

일부 차이점은 다음과 같습니다

  • new String("foo") === new String("foo") - false; 객체 참조 동등성 규칙
  • "foo" === "foo" - true; 문자열 평등

및 규칙 :

  • new String("foo") instanceof Object - true을; Object
  • "foo" instanceof Object-false에서 파생 된 개체입니다. 객체가 아니라 원시적 인 가치입니다.

대부분의 경우 이러한 "단점"때문에 원시적 인 가치를 원하는 경우가 대부분입니다. 문자열 객체는 추가 할 때 자동으로 기본 문자열로 변환되며, String.prototype 함수가 호출됩니다.

자세한 정보 in the specs.

1

console.log("string instance"); 문자열 리터럴을 인쇄하지만 console.log(new String("string instance"));은 개체이므로 각 색인 및 문자처럼 문자열의 모든 세부 정보를 인쇄합니다. 아래 스크린 샷을 보시고 각 문자는 "string instance"입니다.

enter image description here

1

new String("string instance")는 객체이기 때문에 그것의, 어쨌든 console.log((new String("string instance")).toString())

을 시도하고 CONSOLE.LOG하지 자동으로 캐릭터 라인 화 오브젝트를하지