如何从同一类javascript中的方法返回对象数组

2024-03-16

我是 JavaScript 新手。我想要一个类方法返回由同一类实例化的对象数组。怎么做?

目前,基本上以下是我所讨论的代码的一般结构。

class myClass{
   constructor(name,password,emailid,id) {
    this.name = name;
    this.password = password;
    this.emailid = emailid;
    this.id = id;
  }

  asyncMethod = async()=> {
     //method returns array of objects of same class
  }
}


在类实例化时(constructorinit), 将当前实例推送到类的static Array https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static.
检索您的所有实例通过使用userInstance.getInstances()(←这是不好的做法!进一步阅读)或User.instances

class User {

  static instances = [];

  constructor(name, password, emailid, id) {
    this.name = name;
    this.password = password;
    this.emailid = emailid;
    this.id = id;
    User.instances.push(this); // Push instance into static Class's property
  }

  getInstances() {
    return User.instances; // Return array of instances of same Class
  }
}

const A = new User("Cada", "123", "[email protected] /cdn-cgi/l/email-protection", 1);
const B = new User("Roko", "234", "[email protected] /cdn-cgi/l/email-protection", 2);
const C = new User("John", "345", "[email protected] /cdn-cgi/l/email-protection", 3);

console.log(A.name, B.name, C.name); // "Cada", "Roko", "John"
console.log(A.getInstances());  // [User, User, User]
console.log(myClass.instances); // [User, User, User]

密切相关的答案:https://stackoverflow.com/a/61014433/383904 https://stackoverflow.com/a/61014433/383904

我无法解释static关键字优于MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static:

静态方法和静态属性都不能在类的实例上调用。反而,他们被班级本身召唤. (*ac: myClass.instances在上面的演示中)
静态方法通常是实用函数,例如创建或克隆对象的函数,而静态属性对于缓存、固定配置或不需要跨实例复制的任何其他数据.


它通常是一个暴露内部结构的不良做法一个类到一个实例。
例如,一个User实例不应该能够从其类构造函数继承整个用户列表。
这是一个使用的轻微变体静态私有 #和班级Getters get:

class User {

  static #_instances = []; // Static and private

  constructor(userData) {
    Object.assign(this, userData);
    User.#_instances.push(this);
  }

  static get instances() { // Static to Class
    return [...User.#_instances]; // exposes private (as immutable)
  }
}

const A = new User({name:"Cada", password:"123", emailid:"[email protected] /cdn-cgi/l/email-protection", id:1});
const B = new User({name:"Roko", password:"234", emailid:"[email protected] /cdn-cgi/l/email-protection", id:2});

console.log(A.name, B.name); // "Cada", "Roko",

console.log(A.instances);            // undefined ????
console.log(User.instances);         // [User, User] ????

User.instances.push({name:"EVIL!"}); // ????  
console.log(User.instances);         // [User, User] ????
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从同一类javascript中的方法返回对象数组 的相关文章

  • 使用画布元素作为文本区域

    我正在寻找有关如何使用类似于文本区域的画布元素的直接描述 我见过这样的项目Ace http ace ajax org 只是想知道如何像文本区域一样写入该区域 只是纯文本 没有什么花哨的 提前致谢 Ace 曾经是 Mozilla Skywri
  • 1分30秒倒计时器javascript

    我有代码 但它适用于 2 分钟计时器 我需要将其修改为 1 分 30 秒计时器 我已经尝试过 但未能从 1 30 开始计时器 因为我是这一行的初学者 并且想学习如何做到这一点 这是代码 div div
  • 在 Angular 单元测试中应该如何处理运行块?

    我的理解是 当您在 Angular 单元测试中加载模块时 run块被调用 我认为如果你正在测试一个组件 你不会想同时测试run块 因为unit测试应该只是测试一个unit 真的吗 如果是的话有什么办法可以防止run阻止运行 我的研究让我认为
  • 是否可以将自定义 HTML 添加到传单图层组和图层控件

    有什么方法可以将自定义 HTML 注入图层组和图层控件中吗 在我们的应用程序中 我们实现了滑块 输入 范围 来调整不透明度设置 并且很明显 在其控制容器内部的基础层上使用专用滑块是有意义的 没有选项或参数可以修改此控件 理想情况下 我们希望
  • Webpack 和 Angular HTML 图像加载

    我一直对 webpack 和 Angular 感到头疼 这可能有一个简单的答案 但我无法弄清楚 我已经阅读了堆栈溢出中关于这个主题的几乎所有答案 但都无济于事 我有一个像这样的 html 页面 还有其他包含图像的模板 img
  • Disqus 评论数始终为 0 条评论

    我想我已经按照通用代码的说明设置了 Disqus 问题是它总是说某个帖子有 0 条评论 拿这个帖子来说 http tx0rx0 com retropie and the raspberry pi http tx0rx0 com retrop
  • Strapi 未加载 Digital Ocean 上托管的现有 MongoDB 中的集合

    我正在使用 Strapi 创建一个新应用程序 并尝试将其与托管在 Digital Ocean 上的 MongoDB 连接 但不幸的是Strapi 无法从现有 MongoDB 获取集合 在这里 我提到我实现 Strapi 与现有 MongoD
  • 语法:const {} = 变量名,任何人都可以解释或指出我正确的方向[重复]

    这个问题在这里已经有答案了 这个语法在 JavaScript 中意味着什么 可能是 ES6 const 变量名 我目前正在尝试掌握 React 在很多例子中我都遇到过这种语法 例如 const girls guys women men st
  • SVG 中三角形的圆角

    我正在尝试制作一个具有圆角的三角形 三角形将如下所示 左下角是唯一看起来相当容易制作的角 主要是因为这是一个 90 度的 转弯 该转弯是使用QSVG 中的命令具有以下参数 Q x y height x y height RADIUS从我正在
  • 禁用整个站点的 IE8 加速器

    是的 我知道有类似的问题 https stackoverflow com questions 499565 is it possible to disable ie8 accelerators on my website在 SO 上 但它已
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • 使用 jQuery/JavaScript 将文本框值复制到剪贴板

    我有一个文本框和按钮 如下所示 div class col xs 11 style padding 20px 0 div
  • jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

    我正在尝试使用 TypeScript 和 jspm system js 来引导 Web 应用程序进行模块加载 我还没有走多远 安装 jspm 后 并使用它来安装 jQuery jspm install jquery 以及基础知识 main
  • 将数组中的所有元素相乘

    我在这里找不到我真正想要的例子 我想将所有数组元素相乘 因此如果数组包含 1 2 3 总和将为 123 6 到目前为止 我已经得到了这段代码 但它返回未定义 function multiply array var sum 1 for var
  • 清理 html 字符串中的所有脚本

    HTML5 剪贴板很棒 但我正在寻找一种使其安全的方法 用户正在将文本 html 粘贴到我的网页中 这允许他们粘贴图像 表格等 我正在寻找一种方法 在将粘贴的内容添加到页面之前删除所有脚本 我需要删除
  • D3.js - 具有多个环的圆环图

    以下示例显示了 D3 js 中的圆环图 是否可以向图表添加多个圆环 var dataset apples 53245 28479 19697 24037 40245 var width 460 height 300 radius Math
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • ES6 Reflect API 的好处

    我一直在努力升级一些代码以使用 ES6 语法 我有以下代码行 delete this foo 我的 linter 提出了使用建议 Reflect deleteProperty this foo 您可以找到该方法的文档here https d
  • Morgan Logger + Express.js:写入文件并在控制台中显示

    我正在尝试将 Morgan 与 Express js 结合使用来编写日志文件 同时也在控制台上显示我的日志 我正在使用这段代码 var logger require morgan var accessLogStream fs createW
  • 如何从react-bootstrap复选框获取值/属性?

    我正在尝试使用反应引导复选框 https react bootstrap github io components html forms controls https react bootstrap github io components

随机推荐

  • 如何传递特征矩阵行引用以将其视为向量?

    我有一个对向量引用进行操作的函数 例如 void auto bias const Eigen VectorXf v Eigen Ref
  • Vim:打开文件后读取模型行?

    我从事各种项目 其中许多项目设置了特定于文件的 vim 设置 我被要求不要在 vimrc 中设置模型行 加载文件后有没有办法加载模型设置 所以如果我用 vim 打开 tmp c int main int argc char argv ret
  • 工具提示气球显示位置(用于错误通知)

    不久前我问了一个与此密切相关的问题 通知用户错误的替代方法 https stackoverflow com questions 2878043 alternative way to notify the user of an error 简
  • ASP.NET MVC 显示成功消息

    这是我从应用程序中删除记录的示例方法 Authorize Roles news admin public ActionResult Delete int id var ArticleToDelete from a in db Article
  • PyQt - 如何打开目录文件夹?

    我搜索了很多 我知道如何打开目录对话框窗口 但我正在寻找的是在Windows操作系统下打开目录文件夹的方法 就像右键单击本地文件夹之一并选择打开一样 有什么建议么 对于 python 3 7 你可以这样做 os startfile path
  • 在c中实现时间延迟

    我不知道如何准确地描述这个搜索 所以我没有运气找到任何东西 S 我需要在 C 中实现时间延迟 例如我想做一些事情 然后等一分钟 然后继续做事情 这有道理吗 谁能帮我吗 在标准 C C99 中 您可以使用time 为此 请执行以下操作 inc
  • 将内存中的图像转换为 Blob [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我内存中有一个图像 类型 java awt Image 我想使用jdk 1 7将其转换为Blob 类型 java sql Blob 我能找
  • 为什么Python的导入不能像C的#include那样工作?

    我实际上已经尝试理解 Python 导入大约一年了 我几乎放弃了 Python 编程 因为它看起来太混乱了 我有 C 语言背景 我认为import工作就像 include 但是如果我尝试导入某些内容 我总是会遇到错误 如果我有两个这样的文件
  • 在 RMI 期间知道端口号

    有没有办法在RMI过程中同时知道客户端和服务器的端口号 当在 RMI 过程中向客户端返回结果时 客户端下次请求该结果时 客户端和服务器之间的对话是否会在与上次相同的端口上 当服务器自第一个结果返回后一直在运行时或新的端口已创建 例如 cal
  • 动态传递参数

    我正在尝试使用 ExtJS 4 将图像从数据库检索到数据视图 现在我需要动态传递参数 主要是这里 Ext define pkgName v02x003001 SV02X00300102 extend Ext view View alias
  • 下载 Excel 文件时帧加载中断

    我有一个 Angular 脚本 它会访问我的服务器并获取一些数据 该调用如下所示 http post url success function response Do some work Go to the link that the se
  • Jquery上下移动行

    我使用了给出的代码here https stackoverflow com questions 1569889 jquery move table row使用 jquery 在 gridview 中向上 向下移动行 这工作得很好 但是如何实
  • 使用 Kafka 和 NodeJS 进行实时通知

    在我的项目中 我必须设计一个实时通知系统 我就是这样做的 如下图所示 你可以看到我使用 Kafka 作为队列消息系统 并使用 NodeJS 来构建 Websocket Server 和 Kafka Consumers 生产者将收集通知数据并
  • 构建失败,显示 500,请在服务器上运行“jupyter lab build”以获得 Jupyter lab 中的完整输出

    我正在尝试在 jupyter 实验室中添加扩展 我转到扩展选项卡并单击扩展上的 安装 几秒钟后我收到一个弹出窗口说Build failed with 500 please run jupyter lab build on the serve
  • 是否可以将自定义域从一个 Web 应用程序移动到另一个 Web 应用程序?

    我为网络应用程序 webapp a 配置了一个自定义域 www abc com 我想将其转移到 webapp b 而无需停机 如果我尝试将域添加到 webapp b 我会得到 主机名 www abc com 已分配给另一个 Azure 网站
  • Boost R-tree支持层次遍历吗?

    看来R tree http www boost org doc libs 1 61 0 libs geometry doc html geometry reference spatial indexes boost geometry ind
  • Javascript:将日期时间转换为 DD/MM/YYYY - 时间?

    我有一个datetime看起来像这样 2017 04 17 18 26 03 如何使用 javascript 或 jquery 将其转换为这种格式 17 04 2017 18 26 我发现这个问题我认为可能对我有帮助 但答案是转换时间戳 但
  • 添加了空的默认 XML 命名空间 xmlns="" 属性?

    我有简单的代码 我创建根元素并将子元素附加到它 问题是孩子追加了空xmlns 属性 虽然我不期望它 这只是第一个孩子的问题 第二个嵌套级别的孩子已经可以了 所以 下面的代码 DocumentBuilder builder factory n
  • 使用 mvc 身份使用电话号码而不是电子邮件注册

    我的网络应用程序有一个要求 我需要使用电话号码而不是电子邮件和密码来注册用户 系统应输入用户的电话号码并向该电话号码发送 OTP SMS 如果 OTP 匹配 我需要创建用户 我尝试使用 asp net 身份进行 2FA 但它仅在用户已注册并
  • 如何从同一类javascript中的方法返回对象数组

    我是 JavaScript 新手 我想要一个类方法返回由同一类实例化的对象数组 怎么做 目前 基本上以下是我所讨论的代码的一般结构 class myClass constructor name password emailid id thi