在 javascript 中找到 属性 的 class 个实例
find class instance by property in javascript
我想检索一些 js 的实例 Class 只有参数的值
让我们说:
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 种解决方案,但 它们缝合过度 :
第一个想法:
将所有实例存储在一个数组中(全局范围或 class 的静态)并遍历所有实例以查找和 return 实例,但这意味着要保持跟踪,在数组中添加和删除实例。
第二个想法:
让每个实例侦听从文档触发的自定义事件,并将发出的数据与内部参数进行比较,以检查它是否相关并向文档发出信号。
我怎样才能以简单的方式实现这一点,或者除了这 2 种方法之外别无他法?
根据您所写的内容,让 class 本身使用实例变量跟踪实例似乎是您正在寻找的方法。当然,这意味着实例永远不会被垃圾回收,除非您明确释放它们。但也许这对你来说不是问题。以下是我将如何解决这个问题:
function MyClass(id) {
this.id = id;
MyClass.instances[id] = this;
}
MyClass.instances = {};
MyClass.instanceFromId = function(id) {
return MyClass.instances[id];
}
我想检索一些 js 的实例 Class 只有参数的值
让我们说:
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 种解决方案,但 它们缝合过度 :
第一个想法:
将所有实例存储在一个数组中(全局范围或 class 的静态)并遍历所有实例以查找和 return 实例,但这意味着要保持跟踪,在数组中添加和删除实例。
第二个想法:
让每个实例侦听从文档触发的自定义事件,并将发出的数据与内部参数进行比较,以检查它是否相关并向文档发出信号。
我怎样才能以简单的方式实现这一点,或者除了这 2 种方法之外别无他法?
根据您所写的内容,让 class 本身使用实例变量跟踪实例似乎是您正在寻找的方法。当然,这意味着实例永远不会被垃圾回收,除非您明确释放它们。但也许这对你来说不是问题。以下是我将如何解决这个问题:
function MyClass(id) {
this.id = id;
MyClass.instances[id] = this;
}
MyClass.instances = {};
MyClass.instanceFromId = function(id) {
return MyClass.instances[id];
}