”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 何时避免立即实例化匿名类?

何时避免立即实例化匿名类?

发布于2024-11-08
浏览:487

When to Avoid Immediate Instantiation of Anonymous Classes?

匿名类的立即实例化:一个警示故事

在 ES6 中,可以定义匿名类并立即实例化它们。虽然这种语法乍一看似乎很吸引人,但了解它的陷阱以及为什么通常应该避免它是至关重要的。

要直接实例化匿名类,我们使用以下语法:

var entity = new class {
    constructor(name) { this.name = name; }
    getName() { return this.name; }
}('Foo');

在幕后,这会导致为每个实例化创建一个新的构造函数和一个原型对象。这意味着使用此方法创建的多个对象不会共享类继承或原型关系的任何好处。

此外,此方法破坏了使用匿名类创建单例对象的尝试。仍然可以访问和利用构造函数来创建其他实例,从而否定预期的单例行为。

鉴于这些注意事项,强烈建议避免使用立即实例化的匿名类。更简单的对象字面量提供了更高效、更直接的替代方案:

var entity = {
    name: 'Foo',
    getName() { return this.name; }
};
版本声明 本文转载于:1729392136如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-12-22
  • 插入数据时如何修复“常规错误:2006 MySQL 服务器已消失”?
    插入数据时如何修复“常规错误:2006 MySQL 服务器已消失”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2024-12-22
  • 如何高效地将数据从SQL Server 2005迁移到MySQL?
    如何高效地将数据从SQL Server 2005迁移到MySQL?
    将数据从 SQL Server 2005 导出到 MySQL在数据迁移领域,从 SQL Server 2005 到 MySQL 的过渡可能会带来挑战。一项特别艰巨的任务是提取存储在近 300 个表中的大量数据并将其转换为兼容的 MySQL 数据库。使用 bcp 的局限性,例如无效的 CSV 格式以及...
    编程 发布于2024-12-22
  • 为什么我无法通过 Ruby on Rails 3 应用程序中的套接字文件连接到 MySQL 服务器?
    为什么我无法通过 Ruby on Rails 3 应用程序中的套接字文件连接到 MySQL 服务器?
    使用套接字连接在 Ruby on Rails 3 中建立 MySQL 连接在 macOS 上的 Ruby on Rails 3 环境中管理数据库连接时,用户尝试执行迁移时可能会遇到以下错误:“无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器” (2)”。此错...
    编程 发布于2024-12-22
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-12-22
  • 从代码到聊天:帮助我免费部署我的 Node.js 和 React 应用程序!
    从代码到聊天:帮助我免费部署我的 Node.js 和 React 应用程序!
    大家好, 我很高兴分享我已经使用 Node.js、React 和 Socket.io 开发了一个聊天应用程序! ?这是一次令人难以置信的学习经历,我对它的结果感到自豪。该应用程序允许实时消息传递,并且我已经实现了用户身份验证和聊天室等功能。 现在我已经构建了它,我希望免费部署它,但我可以使用一些指导...
    编程 发布于2024-12-22
  • 为什么 `mysqli_query()` 返回“警告:mysqli_query() 期望参数 1 为 MySQLi,给定 null”?
    为什么 `mysqli_query()` 返回“警告:mysqli_query() 期望参数 1 为 MySQLi,给定 null”?
    理解“警告:mysqli_query() 期望参数 1 为 MySQLi,在中给出 null”错误在您尝试创建自定义CMS,您遇到以下错误消息:“警告:mysqli_query() 期望参数 1 为 MySQLi, null Give in"错误原因此错误表明执行 SQL 查询的 mysq...
    编程 发布于2024-12-22
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-12-22
  • 为什么接口对于掌握 Java 中的面向对象编程至关重要?
    为什么接口对于掌握 Java 中的面向对象编程至关重要?
    接口:增强 OOP 的桥梁在 Java 世界中,了解接口的原因、内容和方式对于掌握面向对象编程。这里有一个全面的细分:什么是接口?接口是纯抽象的集合——没有实现和最终字段的抽象方法。这意味着接口定义契约而不是提供代码片段。为什么使用接口?接口提供了几个好处:合同执行: 他们确保实施类遵守特定的解耦:...
    编程 发布于2024-12-22
  • 像 V8 和 JavaScriptCore 这样的 JavaScript 引擎是否使用字符串实习?
    像 V8 和 JavaScriptCore 这样的 JavaScript 引擎是否使用字符串实习?
    JavaScript引擎会使用String Interning吗?简介:在编程中,string interning是指重用现有字符串对象的过程而不是为相同的字符串创建新的字符串。这种优化技术旨在减少内存使用并提高性能。问题是,常见的 JavaScript 引擎,包括 V8 和 WebKit 的 Ja...
    编程 发布于2024-12-22
  • 如何捕获 Go 模板输出并将其分配给变量?
    如何捕获 Go 模板输出并将其分配给变量?
    在 Go 中捕获模板输出在 Go 模板中,捕获子模板的输出或直接将其分配给变量是默认不支持。不过,这可以通过注册自定义函数并使用字节缓冲区接收模板的结果来实现。自定义函数注册要捕获模板输出,请注册Template.Funcs() 的函数将模板名称作为参数并以字符串形式返回模板的输出:func exe...
    编程 发布于2024-12-22
  • Go 的短路评估会影响条件语句的性能吗?
    Go 的短路评估会影响条件语句的性能吗?
    Go 中的短路求值在编程中,短路求值是一种仅在需要确定周围语句的结果时才对表达式求值的技术。这通常用在条件语句中,如果先前的条件已经为 false,则无需对多个条件进行求值。Go 实现逻辑运算符(&& 和 ||)的短路求值,与许多其他编程类似语言。这意味着在 if 语句中,解释器将从左到右评估条件,...
    编程 发布于2024-12-22
  • HTML 格式标签
    HTML 格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2024-12-22
  • 我应该使用哪些 g++ 警告标志来进行全面的 C++ 代码分析?
    我应该使用哪些 g++ 警告标志来进行全面的 C++ 代码分析?
    使用 g 进行 C 编译的彻底而详细的警告标志 Gcc 提供了一套全面的警告标志来帮助开发人员检测潜在问题他们的代码。要在 C 中启用彻底且详细的警告,请考虑以下建议:基本警告:-迂腐:遵守严格C语言标准。-Wall:激活所有普遍接受的warnings.-Wextra:将警告范围扩大到-Wall之外...
    编程 发布于2024-12-22
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-12-22

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3