• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

생성자에 대한 질문입니다.

20.04.15 14:06 작성 조회수 69

1

안녕하세요~!
오브젝트 인스턴스 생성에서 new 를 쓰는 것과 안쓰는것이 같은 인스턴스를 생성한다고 강의에서 말씀하셨습니다.

var thrObj = Number('123');
var fourObj = new Number('123');

console.log(thrObj);
console.log(fourObj);

console.log(thrObj.toString());

1.이 코드에서 thrObj 는 초기에 프리미티브 값이며, toString()이 호출되는 시점에 인스턴스를 생성하여 함수를 호출한다면,
만약 toString()호출 이후에 thrObj에 다른 함수를 호출하면 인스턴스를 새로 생성하게 되는 것인가요?

2. 위와 같이 대입하여 생각했을때, Object 인스턴스 생성에서는 new를 붙이던 안붙이던 함수를 호출하기 이전에 이미 인스턴스를 생성하는것인가요?

답변 1

답변을 작성해보세요.

3

var thrObj = Number('123'); ==> String 타입 "123"을 Number 타입 값으로 변환합니다. 따라서 thrObj보다는 thrValue가 더 적절합니다.

var fourObj = new Number('123'); ==> 우선 Number 인스턴스를 생성합니다. 인스턴스에 String 타입 "123"을 Number 타입 값으로 변환하여 프리미티브 값으로 설정합니다. 따라서 fourObj는 인스턴스입니다.

console.log(thrObj); ===> 이것은 변숫값을 출력합니다.

console.log(fourObj); ==> 인스턴스를 출력해야 하지만, 프리미티브 값을 갖는 인스턴스는 인스턴스를 출력하지 않고 인스턴스에 설정된 프리미티 값을 출력합니다.

console.log(thrObj.toString()); ==> Number 타입 값 123을 String 타입 "123"으로 변환합니다.