创建嵌套 ES6 类的高效而优雅的方法?

mem*_*eme 2 javascript oop class object

在尝试找到一种在 JS 中使用嵌套类的方法时,我想到了这样的事情:

class Character {
    constructor() {
        this.Info= class I {
            constructor(name,value) {
                this.name=name;
                this.value=value;   
            }
        };
    }
    bar () {
        var trial = new this.Info("Goofy", 2);
        alert(trial.name);
    }
}

var test = new Character();
test.bar();
Run Code Online (Sandbox Code Playgroud)

这似乎有效。但是,我担心这可能会为每次调用创建一个新的函数对象new,因为我在构造函数中定义了该类(在每次new调用时执行)。有没有更有效的方法来做到这一点?

这个问题并没有解决我的问题,因为作者只是想知道如何嵌套class; 我已经能够做到这一点,但我想知道是否有更有效的方法。

fil*_*ipe 5

在 React、Angular 或仅使用 babel 中使用静态属性,因为目前并非所有浏览器都实现了直接静态类属性。

class Character {

    static Info = class I {
        constructor(name) { this.name=name; }
    }

    bar () {
        return new Character.Info("Goofy");
    }
}

const test = new Character();
console.log(test.bar());
Run Code Online (Sandbox Code Playgroud)

以旧方式使用静态属性——目前适用于所有浏览器。

class Character {
    bar () { return new Character.Info("Goofy"); }
}

Character.Info = class I {
    constructor(name) { this.name=name; }
}

const test = new Character();
console.log(test.bar());
Run Code Online (Sandbox Code Playgroud)

  • “我们”并不都使用 babel。我不支持引入这样的依赖关系,这实际上并不比说“使用库 X”更好。 (2认同)