3 回答
TA贡献1829条经验 获得超7个赞
简短的答案:不。myObj不是对象的名称,它是持有对该对象的引用的变量的名称-您可以有任意数量的其他变量持有对该对象的引用。
现在,如果是您的程序,则要制定规则:如果您想说任何给定对象永远只能被一个变量引用,并努力在代码中强制执行,那么只需在对象上设置一个属性即可变量名。
就是说,我怀疑您要的实际上是您真正想要的。也许更详细地描述您的问题...?
Pedantry: JavaScript没有类。someObject是构造函数。给定对对象的引用,您可以使用构造函数属性获得对创建该对象的函数的引用。
针对您提供的其他详细信息:
您正在寻找的答案可以在以下位置找到:JavaScript回调范围(以及对SO上其他众多问题的回答-这对JS新手来说是一个普遍的困惑点)。您只需要将对对象成员的调用包装在一个闭包中,以保留对上下文对象的访问。
TA贡献1851条经验 获得超4个赞
通过在函数中使用它,然后使用以下命令检查函数的来源,也许可以实现您的目标toString():
var whatsMyName;
// Just do something with the whatsMyName variable, no matter what
function func() {var v = whatsMyName;}
// Now that we're using whatsMyName in a function, we could get the source code of the function as a string:
var source = func.toString();
// Then extract the variable name from the function source:
var result = /var v = (.[^;]*)/.exec(source);
alert(result[1]); // Should alert 'whatsMyName';
添加回答
举报