Видимо вы не понимаете, что такое переменная - ссылка на объект. Вам привели пример, когда для одного и того же объекта существует несколько ссылок с разными именами и не понятно какое из них должен бы был выдать интерпритатор JavaScript на ваш запрос, поэтому такой возможности нет. Пересмотрите способ решения задачи так, чтобы не возникало потребности получать имя ссылки на объект.
|
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. |
Часовой пояс GMT +3, время: 14:11. |