JavaScript ES6의 클래스 이름에서 객체 생성
기존의 기존- 스타일 구문을 사용하면 오류가 발생할 수 있습니다. 이는 이전 구문이 새로운 ES6 구문과 호환되지 않기 때문입니다.
제공된 코드 조각에서:
export class Column {} export class Sequence {} export class Checkbox {} export 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 throw error } } let factory = new ColumnFactory(); let column = factory.create('userName');
< ;p>return new window[className](name); 줄에서 오류가 발생합니다. 클래스 이름을 전역 변수로 액세스하려고 하기 때문입니다. 클래스가 전역 변수로 노출되지 않기 때문에 ES6에서는 이 접근 방식이 실패합니다.
해결책:
이 문제를 해결하려면 실제 클래스가 포함된 specColumn 객체의 클래스 이름 참조:
export class Column {} export class Sequence {} export class Checkbox {} export const columnFactory = { specColumn: { __default: Column, // <-- __sequence: Sequence, // <-- __checkbox: Checkbox // <-- }, create(name, ...args) { let cls = this.specColumn[name] || this.specColumn.__default; return new cls(...args); } };
이렇게 하면 더 이상 전역적으로 사용 가능한 클래스 이름에 의존하지 않고 specColumn 객체에서 직접 클래스에 액세스할 수 있습니다.
위 내용은 ES6에서 클래스 이름으로 객체를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!