【问题标题】:In JS,how to get a obj variable's name在 JS 中,如何获取 obj 变量的名称
【发布时间】:2013-10-11 06:25:21
【问题描述】:

喜欢这段代码

  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:我在做一些不正确的事情。所以我问这个未回答的问题,谢谢大家。

我通过一个类obj的方法将一个事件绑定到一个DOM元素,并且这个obj有一些子类obj,当触发事件时,这个变量是指向dom elem的,我不知道如何识别哪个obj触发这个事件,所以我试试这个方法。

但这是错误的方法!所以我尝试了其他方法。我使用call方法更改this变量,现在我解决了我的问题。

【问题讨论】:

  • 如果它们是全局的,你可以在窗口的某个属性下找到它们。如果它们是本地的,则很难找到它们。
  • 除非这是一个纯粹的哲学问题,否则我怀疑你问这个问题的原因是你对如何做某事感到困惑(并且以某种不正确的方式做事)。您能解释一下为什么这个功能对您很重要吗?

标签: javascript variables object


【解决方案1】:

我相信答案是“做不到”。

变量标签并不意味着您的代码在运行时可以查看。作为程序作者,它们是为您在程序编写时使用的。

如果一个对象需要一个您需要在运行时检查和使用的标签,您应该给它该属性以供使用。

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

【讨论】:

  • 如你所说,起初,我以某种不正确的方式做某事。然后我尝试任何其他方式来处理它,并得到了正确的方法。
【解决方案2】:

对象与将其作为值保存的变量之间没有任何关系。

因为可以有不止一个变量。

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

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

【讨论】:

  • 我不知道如何解释我为什么要问这个问题。但最后,我发现我做错了。谢谢你的建议。
【解决方案3】:

dystroy 和 Genia S. 说了什么。

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

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

【讨论】:

  • 听你的选项,我很好,我只是用了一些不正确的方式,只是 Genia S 说的。而且我认识到我的代码太糟糕了,我会尝试编写比以前更好的代码。想想你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 2017-08-06
  • 2019-04-18
  • 2021-08-13
  • 1970-01-01
相关资源
最近更新 更多