Я пытаюсь получить имя экземпляра моего класса.
Я делаю это, перебирая все глобальные объекты и сравнивая его с указателем this.
Это работает в Chrome и FF, но в IE это не так. Кажется, проблема в том, что глобальные переменные не отображаются в окне.
Как я могу перебрать глобальные переменные в IE?
PS: я знаю, что это работает только до тех пор, пока существует только один экземпляр, и я не хочу передавать имя экземпляра в качестве параметра.
function myClass()
{
this.myName = function ()
{
// search through the global object for a name that resolves to this object
for (var name in this.global)
{
if (this.global[name] == this)
return name
}
}
}
function myClass_chrome()
{
this.myName = 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 ;
}
} ;
}
// store the global object, which can be referred to as this at the top level, in a
// property on our prototype, so we can refer to it in our object's methods
myClass.prototype.global = this
//myClass_IE.prototype.global = this
// create a global variable referring to an object
// var myVar = new myClass()
var myVar = new myClass_chrome()
//var myVar = new myClass_IE()
alert(myVar.myName() );// returns "myVar"