如何从对象中获取保存对象实例的变量名:Javascript

时间:2014-11-12 06:26:07

标签: javascript oop object instance instance-variables

我无法找到实现这一目标的动态/一般方法。 我想要的是从对象函数中获取保存启动对象的变量的名称。

如果没有例子,很难解释这一点。 我不知道是否有"技术/程序化"这个程序的名称。

举个例子

我发起一个对象为..

var jTest = new boom('hi');

我有对象构造函数为..

function boom(message){
   console.log(message+' - '+objname);
   // what I want in the value of 'objname' is 'jTest'
   // I want to know dynamically what is the name of the variable that is going to hold this object instance (in this case 'jTest').
   // so that when I create html elements from this object
   // and they later have events I get a way to access the object instance
   // from inside the event functions.

   // for eg
   this.ref = document.createElement('div');
   this.ref.setAttribute('style','display:block;width:100px;height:100px;background:#f00');

   this.ref.setAttribute('data-obj',objname); // <- this obj name contains jTest or whatever name this object instance is stored as
   // then if i saved a name 'jTest' inside the element attr as a ref for later

   this.body.appendChild(this.ref);
   this.ref.addEventListener('click',(function(event){
       // this  - over here it refers to the element not the object instance jTest or any other forsaken name
       jTest.dance(); // now i want to run an object property called dance()
       // how to do this dynamically...?
       // you need to know the name of the variable that holds this object instance
       // so that you can call its property
       // this is where the attr "data-obj" value 'jTest' will help !
   }),true);
}

我想知道变量的文字名称(在本例中为&#39; jTest&#39;),其中包含对象内部对新创建的对象实例的引用。

这样我就可以为我在对象内部创建的html元素设置一个标识符,类(.jTest)。

所以当我在那些html元素上有事件时 我将知道哪个实例创建了它们,我可以访问相应的对象函数。

希望这是可以理解的。我将尝试更新描述,因为我有新的想法来解释自己。 还建议我解决此问题的其他方法&#39;一种了解和调用从元素事件(hover / click)函数内部创建元素的对象实例的方法

1 个答案:

答案 0 :(得分:2)

我认为你应该看看这个问题:Determine name of a JavaScript object instance's class

但是,对象jTest不是“名称”,而是指向对象的指针。这里最大的问题应该是:为什么你想知道你正在使用的实例的指针名称?您始终可以将正在使用的实例传递给另一个this的对象。 (见:http://www.quirksmode.org/js/this.html