JavaScript ES6의 클래스 이름에서 객체 생성
표준 ES6 구문을 사용하여 클래스 이름에서 객체를 생성하려고 하면 오류가 발생할 수 있습니다. 다음 코드는 이를 보여줍니다.
import "./myModule.js"; class Column {} class Sequence {} class Checkbox {} class ColumnFactory { constructor() { this.specColumn = { __default: 'Column', __sequence: 'Sequence', __checkbox: 'Checkbox' }; } create(name) { let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default']; return new window[className](name); // this line throws an error } } let factory = new ColumnFactory(); let column = factory.create('userName');
클래스 이름에 전역적으로 액세스할 수 없거나 창 개체를 통해 사용할 수 없기 때문에 오류가 발생합니다.
해결책:
이 문제를 해결하려면 클래스 자체를 이름 대신 팩토리 객체에 저장해야 합니다. 이 접근 방식을 사용하면 글로벌 접근성에 의존할 필요가 없으며 공장 구현이 단순화됩니다.
import "./myModule.js"; class Column {} class Sequence {} class Checkbox {} const columnFactory = { specColumn: { __default: Column, // <-- __sequence: Sequence, // <-- __checkbox: Checkbox // <-- }, create(name, ...args) { let cls = this.specColumn[name] || this.specColumn.__default; return new cls(...args); } };
위 내용은 JavaScript ES6의 클래스 이름에서 객체를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!