在 ES6 中,定义匿名类的能力为类声明提供了语法糖。虽然很方便,但立即实例化此类类可能会导致大量问题。
当立即实例化匿名类时,JavaScript 会创建一个新的构造函数并动态原型对象。表达式的每次求值都会产生不同的构造函数和原型。
这种做法有几个明显的缺点:
缺乏可重用性:
与命名类不同,立即实例化的匿名类每次都会创建一个新的构造函数和原型。这意味着多个实例不会共享相同的原型,从而失去了类继承和原型共享的好处。
单例谬误:
如果使用此模式背后的意图是创建单例对象,它会失败。构造函数仍然可访问,允许使用新的entity.constructor创建多个实例。
共识很明确:应避免立即实例化匿名类。简单的对象字面量提供了一种更高效、更直接的替代方案:
var entity = { name: 'Foo', getName: function() { return this.name; } };
虽然新的类模式在其他一些语言中是可以接受的,但它在 JavaScript 中的行为有所不同。 JavaScript 类创建的动态本质排除了这些语言所享有的优势。
以上是在 ES6 中立即实例化匿名类是一个坏主意吗?的详细内容。更多信息请关注PHP中文网其他相关文章!