在JS中,如何获取obj变量的名称

时间:2013-10-11 06:25:22

标签: javascript variables object

喜欢这段代码

  var Obj = function () {}
  Obj.prototype.getVarName = function () {
    console.log( someFunction() );
  }
  var obj = new Obj();
  obj.getVarName(); //output "obj";
  var obj1 = new Obj();
  obj1.getVarName(); //output "obj1";

我不想这样做

  var Obj = function (variableName) {
    this.variableName = variableName || "undefined";
  }
  Obj.prototype.getVarName = function () {
    console.log(this.variableName);
  }
  var obj = new Obj('obj');
  obj.getVarName(); //output "obj";
  var obj1 = new Obj('obj1');
  obj1.getVarName(); //output "obj1";

有人对这个问题有任何想法,谢谢。

p.s:我用somg做错了事。所以我问这个未答复的问题,谢谢所有人。

我通过类obj的方法将事件发送到DOM元素,并且这个obj有somg子类obj,当触发事件时,这个varialbe指向dom elem,任何我不知道如何识别哪个obj触发此事件,所以我尝试这种方式。

但这是一种错误的方式!所以我通过其他方法尝试它。我使用call方法来改变这个变量,现在我解决了我的问题。

3 个答案:

答案 0 :(得分:2)

我相信答案是“它无法完成”。

在运行时,代码不应查看变量标签。作为程序作者,它们适合于您在程序写入时使用。

如果一个Object需要一个你需要在运行时检查和使用的标签,你应该给它使用该属性。

someObject.myName = "someObject"; // if that's what you really want

答案 1 :(得分:1)

从对象到将变量保持为值的变量之间根本就没有关系。

因为可以有多个变量。

var obj = new Obj();
var obj2 = obj;
obj2.getVarName(); // what do you want ?

这可能是所有编程语言中变量概念的基础之一。你不会改变它。如果你想让你的对象有一个名字,解决办法是给他们一个名字,而不是使用变量名。

答案 2 :(得分:1)

什么破坏和Genia S.说。

你的代码闻起来很糟糕。你为什么要这样做?

想要这样做的方式实际上看起来是最好的选择,即创建一个带有名称字段的对象。