>웹 프론트엔드 >JS 튜토리얼 >JavaScript 생성자가 객체가 아닌 값을 반환하면 어떻게 되나요?

JavaScript 생성자가 객체가 아닌 값을 반환하면 어떻게 되나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-13 10:16:02259검색

What Happens When a JavaScript Constructor Returns a Non-Object Value?

JavaScript의 생성자 반환 값 이해

JavaScript에서 생성자는 new 키워드를 사용하여 호출되어 새 객체를 생성합니다. 생성자는 일반적으로 이것을 반환하지만 특정 조건에서는 다른 값이 반환될 수 있습니다.

이 값이 아닌 값을 반환하는 상황

동작은 내부 [ [Construct]] new 연산자가 사용하는 속성입니다. ECMA-262 3판 사양에 따르면:

7단계: 생성자 함수(Result(6))에서 반환된 값의 유형이 아님인 경우 객체인 경우 Result(6)를 반환합니다.
8단계: 그렇지 않으면 Result(1)를 반환합니다(새 object).

예:

다음 생성자를 고려하세요.

function Foo() {
  return 1;
}

new로 호출하면 다음 단계가 발생합니다.

  • 새 객체가 생성되고 Foo의 프로토타입이 객체로 설정됩니다. 프로토타입.
  • Foo.call(newObj, args)이 호출됩니다(이 경우 인수가 없습니다).
  • Foo는 1을 반환합니다.
  • 1은 args가 아니기 때문입니다. Object, 7단계가 실행되고 1이 반환됩니다. 생성자.

따라서 Foo가 객체가 아닌 숫자를 반환했기 때문에 (new Foo() instanceof Foo) === false입니다.

결론:

생성자가 객체가 아닌 값(예: 기본 값, null, 정의되지 않음)을 반환하는 경우 이는 반환되지 않으며 대신 생성자 함수의 반환값이 반환됩니다.

위 내용은 JavaScript 생성자가 객체가 아닌 값을 반환하면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.