>웹 프론트엔드 >JS 튜토리얼 >JavaScript ES6에서 객체를 동적으로 인스턴스화하는 방법은 무엇입니까?

JavaScript ES6에서 객체를 동적으로 인스턴스화하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-05 11:18:14948검색

How to Dynamically Instantiate Objects in JavaScript ES6?

JavaScript ES6의 동적 개체 인스턴스화

문제 설명

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.