ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript ES6 でオブジェクトを動的にインスタンス化するにはどうすればよいですか?
ES6 で古い形式の構文を使用してクラス名からオブジェクトを作成すると、エラーが発生します。次のコードはエラーをスローします。
let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default']; return new window[className](name);
この問題を解決するには、指定されたオブジェクトからクラス名を削除し、代わりにクラス自体を使用します。これにより、ウィンドウ オブジェクトを介したグローバル アクセスへの依存がなくなります。さらに、ファクトリは通常 1 回だけインスタンス化されるため、オブジェクトに単純化できます。
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 中国語 Web サイトの他の関連記事を参照してください。