我不确定这是可能的,但我会试试运气。
在JavaScript中是否可以找到属于特定类实例的所有对象?
例如:
var obj1 = new MyClass();
var obj2 = new MyClass();
var obj3 = new MyClass();
我想指定班级名称" MyClass"并且得到" obj1,obj2,obj3"作为回应。
我该怎么做?
答案 0 :(得分:0)
据我所知,这不起作用。您可以将对象保存在数组中并对其进行迭代以检索类MyClass
的所有对象。
var objects = [new MyClass(), new MyClass(), new MyClass()];
function getObjectsOfClass(objects, clazz) {
var objArr = [];
for (var i = 0; i < objects.length; i++) {
if (objects[i] instanceof clazz) {
objArr.push(objects[i];
}
}
return objArr;
}
答案 1 :(得分:0)
想象一下这种情况。
function M(){}
var m = new M();
然后你做了像
这样的事情for(let f in window){ if(window[f] instanceof M){console.log("founded"+f);}}
你会找到你的对象。
希望有所帮助
答案 2 :(得分:0)
只有对构造函数进行了一些修改
示例:
.....
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<apiSources>
<apiSource>
<springmvc>true</springmvc>
<locations>com.yourcontrollers.package.v1</locations>
<schemes>http,https</schemes>
<host>localhost:8080</host>
<basePath>/api-doc</basePath>
<info>
<title>Your API name</title>
<version>v1</version>
<description> description of your API</description>
<termsOfService>
http://www.yourterms.com
</termsOfService>
<contact>
<email>your-email@email.com</email>
<name>Your Name</name>
<url>http://www.contact-url.com</url>
</contact>
<license>
<url>http://www.licence-url.com</url>
<name>Commercial</name>
</license>
</info>
<!-- Support classpath or file absolute path here.
1) classpath e.g: "classpath:/markdown.hbs", "classpath:/templates/hello.html"
2) file e.g: "${basedir}/src/main/resources/markdown.hbs",
"${basedir}/src/main/resources/template/hello.html" -->
<templatePath>${basedir}/templates/strapdown.html.hbs</templatePath>
<outputPath>${basedir}/generated/document.html</outputPath>
<swaggerDirectory>generated/swagger-ui</swaggerDirectory>
<securityDefinitions>
<securityDefinition>
<name>basicAuth</name>
<type>basic</type>
</securityDefinition>
</securityDefinitions>
</apiSource>
</apiSources>
</configuration>
</plugin> ........
就是这样!但请注意,它可能会成为内存泄漏。因此,当不需要对象时,必须从MyClassInstances中删除引用。
答案 3 :(得分:0)
你可以这样做:
function MyClass(){};
MyClass.prototype.test = function(){
console.log('TEST');
};
function MyClassFactory(){
this.instances = [];
};
MyClassFactory.prototype.create = function(){
let tmp = new MyClass();
this.instances.push(tmp);
return tmp;
};
MyClassFactory.prototype.get = function(i){
return this.instances[i];
};
MyClassFactory.prototype.getAll = function(){
return this.instances;
};
let factory = new MyClassFactory();
let obj1 = factory.create();
let obj2 = factory.create();
let obj3 = factory.create();
let test1 = factory.get(0);
let test2 = factory.getAll();
for(let t of test2){
t.test();
}
test1.test();