首页 >web前端 >js教程 >如何在 JavaScript ES6 中动态实例化对象?

如何在 JavaScript ES6 中动态实例化对象?

Linda Hamilton
Linda Hamilton原创
2024-12-05 11:18:14977浏览

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