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 Foo("world")).hello(); // "hello world"
var FooWrapper = function(...args) { return new Foo(...args) }; FooWrapper("world").hello(); // "hello world"
위 내용은 ES6에서 \'new\' 없이 클래스 생성자를 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!