javascript - 如何在使用“新”构造函数的同时触发函数?
问题描述
所以我有一个类的实例,我想注册所有创建的用户。理想情况下,将它们添加到“用户”类内的变量中,或者如果不可能,添加到全局变量“用户”中。我试图在该类中创建自调用函数,但它不起作用,与变量相同。目标是在使用“new”运算符创建新用户时注册用户。
我怎样才能做到这一点 ??
var users;
class User {
constructor(email, name) {
this.email = email;
this.name = name;
}
}
var user1 = new User("john@sds.com", "John");
var user2 = new User("san@wp.com", "San");
解决方案
根据您的要求,您可以使用weakMaps,并在每次构造函数调用时添加新用户。这将允许您存储对每个创建的新用户的弱引用,防止内存泄漏,以防任何用户被删除。
var users = new WeakMap();
class User {
constructor(email, name) {
this.email = email;
this.name = name;
users.set(this, email)
}
}
var user1 = new User("john@sds.com", "John");
var user2 = new User("san@wp.com", "San");
如果需要枚举它们,则需要使用数组,但在删除用户时,应手动将用户从数组中删除
var users = [];
class User {
constructor(email, name) {
this.email = email;
this.name = name;
users.push(this)
}
}
var user1 = new User("john@sds.com", "John");
var user2 = new User("san@wp.com", "San");
推荐阅读
- java - 为什么 List.contains(Object) 的行为不同?
- r - 如何在同一个数据帧上做colsum和average
- powerbi - 使用 DAX 生成日期系列
- javascript - 仅在服务器上需要一个包
- java - Intellij IDEA 仅针对所有未提交的更改运行测试
- regex - 在换行符之前匹配字符,不包括空格?
- macos - MacOS - 使用带有launchd的脚本 - 启动,登录,注销,关闭?
- service-worker - Workbox 的服务人员在更改时未更新
- python - AllenNLP 共指分辨率的多 GPU 训练
- reactjs - 事件处理程序中带有 [name] 的 PrevState