Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить имя объекта (https://javascript.ru/forum/misc/82097-poluchit-imya-obekta.html)

SIZZZ 11.03.2021 13:33

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

ksa 11.03.2021 14:14

Цитата:

Сообщение от SIZZZ
Можно ли как-то получить имя объекта?

Нужно что-то про тот объект знать... :-?
И знать кто его родитель.
Иначе как его искать?

Цитата:

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

Как вариант...

var obj={
	A: 1,
	B: 2,
}
let name='obj';
alert(JSON.stringify(window[name]));

SIZZZ 11.03.2021 14:40

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

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

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

Но проблема в том, что "инвентарь[i]" (содержимое: инвентарь[нож]) является объектом, поэтому такая запись добавляет в инвентарь null. Если как-то преобразовать "инвентарь[i]" в строку, то все будет работать как нужно.

Vlasenko Fedor 11.03.2021 14:45

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

обратите внимание на п.1. У вас проблемы в архитектуре

SIZZZ 11.03.2021 14:53

Да, я это уже понял, когда столкнулся с такой проблемой. Просто не особо хочется все переделывать)

ksa 11.03.2021 15:00

SIZZZ, ты пишешь много букаф, но не делаешь тестовых примеров... :nono:

ksa 11.03.2021 15:02

Цитата:

Сообщение от SIZZZ
Если как-то преобразовать "инвентарь[i]" в строку, то все будет работать как нужно

Любой массив или объект можно записать в json-формат, а это и есть срока.
В моем примере это показано...

SIZZZ 11.03.2021 15:09

Записываемый объект содержит в себе функции, а они не записываются

ksa 11.03.2021 15:30

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


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