ES6에서 이전 스타일 구문을 사용하여 클래스 이름에서 개체를 생성하면 오류가 발생합니다. 다음 코드에서는 오류가 발생합니다.
let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default']; return new window[className](name);
문제를 해결하려면 지정된 개체에서 클래스 이름을 제거하고 대신 클래스 자체를 사용하십시오. 이렇게 하면 창 개체를 통한 전역 액세스에 대한 의존도가 제거됩니다. 또한 팩토리는 일반적으로 한 번만 인스턴스화되므로 객체로 단순화할 수 있습니다.
export class Column {} export class Sequence {} export class Checkbox {} export const columnFactory = { specColumn: { __default: Column, // <-- Class reference __sequence: Sequence, // <-- Class reference __checkbox: Checkbox // <-- Class reference }, create(name, ...args) { let cls = this.specColumn[name] || this.specColumn.__default; return new cls(...args); } };
이 코드는 클래스를 specColumn 객체에 직접 저장하므로 동적인 작업이 가능합니다. create 메소드를 사용하여 객체를 인스턴스화합니다.
위 내용은 JavaScript ES6에서 객체를 동적으로 인스턴스화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!