匿名类实例化:一种有害的做法
在 JavaScript 领域,匿名类的概念,通过省略类来表示这个名字是随着 ES6 的出现而出现的。虽然这种方法可能看起来很诱人,但它掩盖了一个严重的缺点,导致其使用不明智。
匿名类的真正本质在于它们的立即实例化。考虑以下代码片段:
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo'); console.log(entity.getName()); // Foo
此代码演示了如何创建带有构造函数和方法的匿名类。 new 关键字用于立即实例化该类,从而生成具有指定属性的对象。然而,了解与此方法相关的底层机制和潜在陷阱至关重要。
匿名类表达式的每次计算都会生成一个新的构造函数及其相应的原型对象。这带来了一个重大问题,因为使用此机制创建的后续对象将不会从类或原型继承任何好处。此外,创建单例对象的意图被破坏了,因为构造函数仍然是可访问的,并且可以使用新的entity.constructor创建第二个实例。
鉴于这些限制,强烈建议避免使用使用匿名类实例化。简单的对象字面量在简单性、可读性和效率方面提供了更好的替代方案。请考虑以下事项:
var entity = { name: 'Foo', getName() { return this.name; } }; console.log(entity.name); // Foo
虽然匿名类模式可能会在其他编程语言中得到接受,但它在 JavaScript 中的功能根本不同,应该避免以确保代码的清晰度和性能。
以上是为什么匿名类实例化在 JavaScript 中是有害的?的详细内容。更多信息请关注PHP中文网其他相关文章!