在 JavaScript 中按属性查找类实例
find class instance by property in javascript
我想检索一些js类的实例,只有一个参数的值
比方说:
function myClass(id)
{
this.id = id
}
myClass.prototype.sayHello = function()
{
alert('hello');
}
myClass.instanceFromID = function()
{
...
}
var instance1 = new myClass(22);
var instance2 = new myClass(33);
var instance3 = new myClass(232);
var instance4 = new myClass(1533);
我希望能够通过某种方法访问该实例,例如
myClass.instanceFromID(33).sayHello();
我一直在考虑 2 种解决方案,但它们的缝砺过正:
第一个想法:
将所有实例存储在数组中(全局作用域或类的静态)并遍历所有这些实例以查找并返回实例,但这意味着要跟踪、添加和删除数组中的实例。
第二个想法:
让每个实例监听文档触发的自定义事件,并将发出的数据与内部参数进行比较,检查是否相关,并向文档发出信号。
我如何以简单的方式实现这一目标,或者除了这 2 种方法之外没有其他方法?
根据你写的内容,让类本身跟踪带有实例变量的实例似乎是你正在寻找的方法。 当然,这意味着除非您显式释放实例,否则永远不会对其进行垃圾回收。 但也许这对你来说不是问题。 以下是我将如何解决这个问题:
function MyClass(id) {
this.id = id;
MyClass.instances[id] = this;
}
MyClass.instances = {};
MyClass.instanceFromId = function(id) {
return MyClass.instances[id];
}
相关文章:
- 允许在自定义事件上“查找使用实例”的 IDE
- 查找ckeditor实例
- Jquery:在一个字符串中查找所有实例模式,提示用户替换模式的所有实例,然后进行替换
- 在 JavaScript 中按属性查找类实例
- 让实例化的 javascript 函数查找自己的名称是不好的还是不必要的
- 查找字符串中单词所有实例的位置,在控制台中得到不需要的重复
- 对 Ember 应用程序进行反射/自省,以查找特定模型的实例
- 使用 sequelize 查找没有“modelB”组合实例的“modelA”的所有实例
- 查找给定工作日的下一个实例(即.星期一)与时刻.js
- 查找未被 A 标记括起来的实例,并用 A 标记括起来
- 查找、更改页面上的多个文本实例是缓慢和无响应的,但有效
- JavaScript-如何在字符串中查找正则表达式的所有实例
- Javascript-查找属性的单个实例's在对象数组中的值
- 使用jQuery查找元素的下一个实例,而不考虑关系
- Jquery在按下按钮时查找类的所有实例,并从中删除一个附加类
- 查找数组中最短元素的第一个实例
- 查找数组&中字符串的多个实例重新排序
- 查找谷歌地图实例
- 查找并替换分组标签的实例
- 查找并替换@foo的实例,但不查找@@foo