ES6에서 익명 클래스를 정의하는 기능은 클래스 선언에 대한 구문적 설탕을 제공합니다. 편리하지만 이러한 클래스를 즉시 인스턴스화하면 수많은 문제가 발생할 수 있습니다.
익명 클래스가 즉시 인스턴스화되면 JavaScript는 새로운 생성자 함수를 생성하고 프로토타입 객체를 동적으로 생성합니다. 표현식을 평가할 때마다 고유한 생성자 함수와 프로토타입이 생성됩니다.
이 방법에는 몇 가지 중요한 단점이 있습니다.
재사용성 부족:
명명된 클래스와 달리 즉시 인스턴스화되는 익명 클래스는 매번 새로운 생성자와 프로토타입을 생성합니다. 이는 여러 인스턴스가 동일한 프로토타입을 공유하지 않음을 의미하며 클래스 상속 및 프로토타입 공유의 이점을 잃습니다.
싱글턴 오류:
이 패턴을 사용하는 의도가 다음을 생성하는 것이라면 싱글톤 객체라면 실패합니다. 생성자 함수는 계속 액세스할 수 있으므로 새 엔터티.constructor를 사용하여 여러 인스턴스를 생성할 수 있습니다.
합의는 분명합니다. 즉시 인스턴스화되는 익명 클래스는 피해야 합니다. 간단한 객체 리터럴은 보다 효율적이고 간단한 대안을 제공합니다.
var entity = { name: 'Foo', getName: function() { return this.name; } };
새 클래스 패턴은 일부 다른 언어에서는 허용되지만 JavaScript에서는 다르게 동작합니다. JavaScript 클래스 생성의 동적 특성으로 인해 이러한 언어가 누리는 이점이 없습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3