> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 생성자가 생성된 객체 이외의 값을 반환할 수 있습니까?

JavaScript 생성자가 생성된 객체 이외의 값을 반환할 수 있습니까?

DDD
풀어 주다: 2024-11-10 21:43:02
원래의
601명이 탐색했습니다.

Can a JavaScript Constructor Return Values Other Than the Constructed Object?

생성자 반환 값과 [Instanceof] 연산자

JavaScript에서 생성자 함수는 생성된 개체가 아닌 다른 값을 반환할 수 있습니다. 이러한 상황을 이해하는 것은 instanceof 연산자의 예상치 못한 결과와 같은 런타임 오류를 방지하는 데 중요합니다.

ECMAScript 3판 사양은 생성자 동작을 제어하는 ​​[[Construct]] 속성을 정의합니다. 사양에 따르면:

  • 7단계: 생성자 함수(Result(6))의 반환 값이 Object 유형이 아닌 경우 Result(6)를 반환합니다.
  • 8단계: 그렇지 않으면 새로 구성된 객체를 반환합니다. (결과(1)).

따라서 생성자는 인스턴스오브 연산자가 true를 반환하는 것을 방지하기 위해 기본이 아닌 값(예: 함수 또는 배열)을 반환할 수 있습니다.

예를 들면 다음과 같습니다.

function Foo() {
  return [];
}

const foo = new Foo();
console.log(foo instanceof Foo);  // false
로그인 후 복사

생성자가 배열(객체가 아닌)을 반환하므로 인스턴스 확인이 실패합니다. 반대로 기본 값(예: null 또는 정의되지 않음)을 반환하면 여전히 true가 반환됩니다.

요약하면 생성자가 반환한 값은 결과 인스턴스에 영향을 줄 수 있습니다. 개발자는 [[Construct]] 속성에 설명된 조건을 이해함으로써 예상치 못한 동작을 방지하고 정확한 클래스 상속 검사를 보장할 수 있습니다.

위 내용은 JavaScript 생성자가 생성된 객체 이외의 값을 반환할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿