我无法找到实现这一目标的动态/一般方法。 我想要的是从对象函数中获取保存启动对象的变量的名称。
如果没有例子,很难解释这一点。 我不知道是否有"技术/程序化"这个程序的名称。
举个例子
我发起一个对象为..
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)函数内部创建元素的对象实例的方法。
答案 0 :(得分:2)
我认为你应该看看这个问题:Determine name of a JavaScript object instance's class
但是,对象jTest不是“名称”,而是指向对象的指针。这里最大的问题应该是:为什么你想知道你正在使用的实例的指针名称?您始终可以将正在使用的实例传递给另一个this
的对象。 (见:http://www.quirksmode.org/js/this.html)