当试图找到一种在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();
,它似乎有效。但是,恐怕这可能会为每个new
调用创建一个新的函数对象,因为我在构造函数中定义了类(该类在每个new
调用中执行)。有更有效的方法吗?
This question不能解决我的问题,因为作者只想知道如何嵌套class
;我已经能够做到这一点,但我想知道是否有更有效的方法。
答案 0 :(得分:3)
在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());
以旧方式使用静态属性-当前可在所有浏览器上使用。
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());
答案 1 :(得分:2)
也许您给出的示例太简单了,无法展示您要解决的任何问题,但是在我看来,您根本不需要嵌套它们。
class Info {
constructor(name, value) {
this.name = name;
this.value = value;
}
}
class Character {
bar() {
var trial = new Info("Goofy", 2);
console.log(trial.name);
}
}
const test = new Character();
test.bar();