arseniy-at-home, Вам не нужно это, для идентификации текущего объекта, ссылки this должно хватать.
.ps: извращения ради:
Однако, если все же инстансы созданы вручную, и гарантированно нет ссылок в виде других переменных на эти инстансы, то задайте имя вручную - через свойство:
function A() {};
A.prototype.test = function () {
alert(this.__instanceName);
};
var a = new A();
var b = new B();
b.__instanceName = 'b';
a.__instanceName = 'a';
a.test(); // a
b.test(); // b
Естественно, если будет ссылка:
var c = a;
то результат будет соотвествующий (взятый из объекта, на которых ссылается "с", т.е. из объета "а"):
c.test(); // a
что еще раз подтверждает, что это ненужная затея, и для этих целей есть ссылка this.
Еще более извращенное (только не вздумайте так делать, пишу ради прикола):
Если инстансы глобальные, то можно пройтись циклом по объекту window в поисках инстанса; далее, взять имя ключа window:
A.prototype.test = function () {
for (var k in window) {
if (window[k] === this) {
alert('__instance: ' + k); // =)
}
}
};
a.test(); // a
b.test(); // b
И снова в случае ссылки, Вы получите бред:
var c = a;
c.tets(); // c, a
Так что, мыслите объектами в пространстве (со связями и ссылками друг на друга), а не статическими именами.
В дополнение можно почитать эту статью -
http://javascript.ru/tutorial/object/thiskeyword.