ES6에서 \'new\' 없이 클래스 생성자를 호출할 수 있나요?

Susan Sarandon
풀어 주다: 2024-10-26 01:55:02
원래의
303명이 탐색했습니다.

 Can You Call a Class Constructor Without 'new' in ES6?

ES6에서 새 키워드 없이 클래스 생성자 호출

클래스 정의에 따라:

class Foo {
  constructor(x) {
    if (!(this instanceof Foo)) return new Foo(x);
    this.x = x;
  }
  hello() {
    return `hello ${this.x}`;
  }
}
로그인 후 복사

불가능합니다 new 키워드 없이 클래스 생성자를 직접 호출합니다. 이는 ES6의 클래스에는 클래스가 호출될 때 호출되는 생성자 함수가 본질적으로 있기 때문입니다.

새 클래스 없이 클래스를 호출하면 오류가 발생합니다.

Cannot call a class as a function
로그인 후 복사

이 오류 메시지는 다음을 명확하게 나타냅니다. 클래스 생성자는 클래스의 새 인스턴스를 생성하는 데 필요한 new 연산자로만 호출할 수 있습니다.

이 제한을 극복하려면 다음 접근 방식을 고려하세요.

  • 대신 일반 함수를 사용하세요.
function Foo(x) {
  this.x = x;
  this.hello = function() {
    return `hello ${this.x}`;
  }
}
로그인 후 복사
  • 항상 new를 사용하여 클래스를 호출하세요.
(new Foo("world")).hello(); // "hello world"
로그인 후 복사
  • 클래스를 함수로 감싸고 new로 호출:
var FooWrapper = function(...args) { return new Foo(...args) };
FooWrapper("world").hello(); // "hello world"
로그인 후 복사

위 내용은 ES6에서 \'new\' 없이 클래스 생성자를 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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