1
function myClass(a,b,c) {
     this.alertMyName=function(){alert(instancename)}

{...}


}

进而

foo = myClass(a,b,c);
boo = myClass(a,b,c);

foo.alertMyName(); //it should alert 'foo'
boo.alertMyName(); //it should alert 'boo'

实际上,对于创建大量 html 对象的类,我需要它来为其 ID 加上前缀,以将它们与此类的另一个实例创建的同一对象区分开来。

4

3 回答 3

8

我在 Stack Overflow 上找不到解决方案,所以这是我在 dforge.net 上从ronaldcs 找到的解决方案: http ://www.dforge.net/2013/01/27/how-to-get-the-name- javascript 中的类的实例/

myObject = function () {
  this.getName = function () {
    // search through the global object for a name that resolves to this object
    for (var name in window)
      if (window[name] == this)
        return name;
  };
};

试试看:

var o = new myObject(); 
alert(o.getName()); // alerts "o"
于 2014-04-25T13:34:54.457 回答
3

您可以将其作为参数引入:

function myClass(name, a, b, c) {
   this.alertMyName = function(){ alert(name) }
}

foo = new myClass('foo', a, b, c);

或者之后分配它:

function myClass(a, b, c) {
   this.setName = function(name) {
       this.name = name;
   }
   this.alertMyName = function(){ 
       alert(this.name)
   }
}

foo = new myClass( a,b,c);
foo.setName('foo');
于 2012-10-19T10:29:02.003 回答
2

继大卫的回答之后,javascript 中的变量具有一个原始值或对对象的引用。如果值是引用,那么它引用的东西不知道变量的“名称”是什么。

考虑:

var foo = new MyThing();
var bar = foo;

那么现在应该foo.alertMyName()返回什么?甚至:

(new MyThing()).alertMyName();

如果您希望实例有一个名称,那么给它们一个属性并将其值设置为任何适合的值。

于 2012-10-19T10:34:27.523 回答