在 ES6 中,可以定义匿名类并立即实例化它们。虽然这种语法一开始看起来很吸引人,但了解它的陷阱以及为什么通常应该避免它是至关重要的。
要直接实例化匿名类,我们使用以下语法:
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');
在幕后,这会导致为每个实例化创建一个新的构造函数和一个原型对象。这意味着使用此方法创建的多个对象不会分享类继承或原型关系的任何好处。
此外,这种方法破坏了使用匿名类创建单例对象的尝试。仍然可以访问和利用构造函数来创建其他实例,从而否定预期的单例行为。
鉴于这些注意事项,强烈建议避免使用立即实例化的匿名类。更简单的对象文字提供了更高效、更直接的替代方案:
var entity = { name: 'Foo', getName() { return this.name; } };
以上是何时避免立即实例化匿名类?的详细内容。更多信息请关注PHP中文网其他相关文章!