나는 두 할당 모두 a = "foo"
과 a = new String('foo')
이 같은 것이라고 생각했습니다. 그러나 이전 신고 인 경우 console.log(a instanceof Object)
또는 console.log(a instanceof String)
은 false
을 반환하고 후자의 경우에는 true
을 반환합니다.자바 스크립트 객체 상속이 예상 결과를 나타내지 않음
두 가지 이유로 이상하게 보입니다. 첫째, 일반 선언 a = 'foo'
을 사용해도 모든 문자열 메서드가 작동하여 String
개체에서 상속되었음을 알 수 있습니다. 둘째, a.constructor
은 String
을 반환합니다.
아무도 설명하지 못합니까?
당신이 프리미티브 값의 의미를 설명해 주시겠습니까? 그런데 어떻게하면 'constructor' 속성이 있습니까? – SexyBeast
'JavaScript는 원시 객체를 String 객체로 자동 변환합니다 .'. 그런 다음'console.log (a instanceof String)'에 대해'true'를 반환해야합니다. 그렇습니까? – SexyBeast
프리미티브 값 (부울 또는 숫자 일 수도 있음)은 단순히 인스턴스가 아닌 더 밝은 값입니다. 그러나 js 엔진을 사용하면 필요할 때 메소드를 호출하여 메소드를 호출 할 수 있습니다. 하지만 필요할 때만 (즉, 메소드 호출을해야 할 때가 아니라 instanceof를 호출 할 때). –