在 ES6 中,可以定义匿名类并立即实例化它们。虽然这种语法乍一看似乎很吸引人,但了解它的陷阱以及为什么通常应该避免它是至关重要的。
要直接实例化匿名类,我们使用以下语法:
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');
在幕后,这会导致为每个实例化创建一个新的构造函数和一个原型对象。这意味着使用此方法创建的多个对象不会共享类继承或原型关系的任何好处。
此外,此方法破坏了使用匿名类创建单例对象的尝试。仍然可以访问和利用构造函数来创建其他实例,从而否定预期的单例行为。
鉴于这些注意事项,强烈建议避免使用立即实例化的匿名类。更简单的对象字面量提供了更高效、更直接的替代方案:
var entity = { name: 'Foo', getName() { return this.name; } };
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3