在 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中文网其他相关文章!