Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.03.2021, 13:33
Новичок на форуме
Отправить личное сообщение для SIZZZ Посмотреть профиль Найти все сообщения от SIZZZ
 
Регистрация: 05.03.2021
Сообщений: 8

Получить имя объекта
Можно ли как-то получить имя объекта?
К примеру, есть объект
obj {
A: 1,
B: 2,
}
Нужно получить его имя в виде строки, то есть "obj" и записать его в переменную

Последний раз редактировалось SIZZZ, 11.03.2021 в 13:59.
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2021, 14:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от SIZZZ
Можно ли как-то получить имя объекта?
Нужно что-то про тот объект знать...
И знать кто его родитель.
Иначе как его искать?

Сообщение от SIZZZ
получить его имя в виде строки, то есть "obj" и записать его в переменную
Как вариант...

var obj={
	A: 1,
	B: 2,
}
let name='obj';
alert(JSON.stringify(window[name]));
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2021, 14:40
Новичок на форуме
Отправить личное сообщение для SIZZZ Посмотреть профиль Найти все сообщения от SIZZZ
 
Регистрация: 05.03.2021
Сообщений: 8

Мне нужно получить не содержимое, а имя объекта.
Ситуация такая: делаю игру с инвентарем. Сначала создаю все передметы в виде объектов и добавляю их в объект "предметы". Далее создаю массив "инвентарь", куда потом добавляются найденные предметы. Чтобы сохранить игру, помещаю все нужные переменные, объекты и массивы в один объект, преобразую его в JSON и записываю в файл. При загрузке игры, сохраненный JSON преобразую обратно в объект.
Но проблема в том, что у предметов в свойствах присутствуют функции для использования их в игре. А функции не сохраняются в JSON. Поэтому при загрузке игры, предметы невозможно использовать, так как они загружаются без функций.

Можно решить эту проблему, просто обновив инвентарь после загрузки игры.

for(var i=1, i<инвентарь.length; i++){
if (инвентарь[i] !== null){
инвентарь[i] = предметы[инвентарь[i]];
}
}

Но проблема в том, что "инвентарь[i]" (содержимое: инвентарь[нож]) является объектом, поэтому такая запись добавляет в инвентарь null. Если как-то преобразовать "инвентарь[i]" в строку, то все будет работать как нужно.
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2021, 14:45
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

1 отделите логику от данных
2 toString

обратите внимание на п.1. У вас проблемы в архитектуре
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2021, 14:53
Новичок на форуме
Отправить личное сообщение для SIZZZ Посмотреть профиль Найти все сообщения от SIZZZ
 
Регистрация: 05.03.2021
Сообщений: 8

Да, я это уже понял, когда столкнулся с такой проблемой. Просто не особо хочется все переделывать)
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2021, 15:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

SIZZZ, ты пишешь много букаф, но не делаешь тестовых примеров...
Ответить с цитированием
  #7 (permalink)  
Старый 11.03.2021, 15:02
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от SIZZZ
Если как-то преобразовать "инвентарь[i]" в строку, то все будет работать как нужно
Любой массив или объект можно записать в json-формат, а это и есть срока.
В моем примере это показано...
Ответить с цитированием
  #8 (permalink)  
Старый 11.03.2021, 15:09
Новичок на форуме
Отправить личное сообщение для SIZZZ Посмотреть профиль Найти все сообщения от SIZZZ
 
Регистрация: 05.03.2021
Сообщений: 8

Записываемый объект содержит в себе функции, а они не записываются
Ответить с цитированием
  #9 (permalink)  
Старый 11.03.2021, 15:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

SIZZZ, вместо того чтобы нас стращать новыми "вводными", сделал бы тестовый пример... Описал, что из этого хотел бы получить...
И на этом примере можно было бы что-то показать...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение размера объекта по одной из осей с помощью JavaScript? Gress131313 Общие вопросы Javascript 1 21.01.2020 11:26
Как получить свойсвто объекта? Armen Общие вопросы Javascript 4 19.10.2014 06:45
Как получить значение переменной/свойства объекта, зная ее имя? Sinist3r Общие вопросы Javascript 4 19.09.2013 20:39
Как получить имя файла и изменить его? nedosalivan Общие вопросы Javascript 5 29.03.2010 17:51
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00