Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как получить имя var object = {} объекта (https://javascript.ru/forum/events/75422-kak-poluchit-imya-var-object-%3D-%7B%7D-obekta.html)

Conus 07.10.2018 14:58

как получить имя var object = {} объекта
 
Задача получить собственное имя объекта объявленного глобально, оно есть 
среди прочих элементов объекта за caches но не логично брать просто номер индекса ведь он может изменится

 var mi = function(obj)
		{
                         for (var c in this) { document.body.innerHTML += c + '  '  + this[c]  +   '<br>' } 

                         this.index = Object.keys(this).length       //индекс собственного имени 
		         this.step = Object.keys(this)[this.index]  //собственное имя по индексу

					
		


 			return this
		} 


           mi()


вывод

caches [object CacheStorage]
mi function(obj) { for (var c in this) { document.body.innerHTML += c + ' ' + this[c] + '<br>' } this.index = Object.keys(this).length this.step = Object.keys(this)[this.index]
return this }

TEMPORARY 0
PERSISTENT 1
addEventListener function addEventListener() { [native code] }
removeEventListener function removeEventListener() { [native code] }
dispatchEvent function dispatchEvent() { [native code] }

Aetae 07.10.2018 16:13

1. При strict var не добавляет свойство в глобал.
2. Объект может быть под десятком "имён".

А так:
var obj = {};

function mi(global, object){
  for (var key in global) 
    if(global[key] === object)
      return key;
  return false;
} 

alert(mi(window, obj))

Conus 07.10.2018 17:11

Да не особенно, так же явное указание самого объекта -всё равно что написать самому

можно так еще


function mi(obj)
		{       alert(this.Name())

 			
		} 

		 mi.prototype.Name = function(){ return mi.name;  }
         var mi = new mi()


Часовой пояс GMT +3, время: 00:53.