0

喜欢这段代码

  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";

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

ps:我在做一些不正确的事情,所以我问这个未回答的问题,谢谢大家。

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

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

4

3 回答 3

2

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

变量标签不应该在运行时由您的代码查看。作为程序作者,它们是为您在程序编写时使用的。

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

someObject.myName = "someObject"; // if that's what you really want
于 2013-10-11T06:32:23.233 回答
1

什么dystroy和Genia S.说。

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

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

于 2013-10-11T06:32:27.897 回答
1

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

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

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

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

于 2013-10-11T06:27:32.193 回答