Javascript 如何返回类的实例名?
我希望SomeClass的getName()方法返回实例名。在这种情况下,“SomeInstance.”这可能做到吗?如何做到Javascript 如何返回类的实例名?,javascript,Javascript,我希望SomeClass的getName()方法返回实例名。在这种情况下,“SomeInstance.”这可能做到吗?如何做到 class SomeClass { getName() { return this.constructor.name; } } var SomeInstance = new SomeClass(); document.write(SomeInstance.getName()); 更新 这就成功了 getName() { for (var ins
class SomeClass {
getName() {
return this.constructor.name;
}
}
var SomeInstance = new SomeClass();
document.write(SomeInstance.getName());
更新
这就成功了
getName() {
for (var instance in window){
if (window[instance] === this){
return instance;
}
}
}
如果您的变量在窗口范围内,请在此处使用JS小提琴: 注意:由于Stackoverflow上的跨域安全错误,嵌入的代码段无法工作(代码段托管在另一个域上)
函数getVariableName(实例)
{
用于(窗口中的obj)
如果(窗口[obj]==实例)返回obj;
返回未定义;
}
上课{
getName(){
返回this.constructor.name;
}
}
var SomeInstance=new SomeClass();
log(getVariableName(SomeInstance))代码>找到了这个
getName() {
for (var instance in window){
if (window[instance] === this){
return instance;
}
}
}
这是不可能的。JavaScript无法知道您将实例命名为什么。为什么要获取实例名称?@suraj我不这么认为……是的,我知道了。。删除了我的注释@AndrewLiSomeInstance
只是一个指向对象的变量。因为javascript是一种基于引用的语言,所以问这个问题毫无意义。考虑:var x=newsomeclass();someinstance=x;otherinstance=x
在本例中,我们创建了一个对象,而不是3个,其实例名称可以是x
或someinstance
或otherinstance
。您想返回哪个名称?全部的即使您想要所有实例名称,脚本级别也不支持此操作。在低端C级实现中,它是可用的,因为垃圾收集器就是这样工作的。在本例中是“SomeInstance”。而不是SomeClassRun这个代码段。@AlexanderHiggins,但这不是我要问的问题!再读一遍。他们希望在类中获得变量名“SomeInstance”,这是不可能的。Oops。我没听清楚。我会删除第一个答案。是的,我11分钟前发布了那个答案。