JavaScript - Как реализовать словарь с ключами, которые не являются строками - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь сделать немного простого внедрения зависимостей в моем приложении JavaScript, поэтому я хотел бы написать функцию, которую вы можете передать в класс, и она возвращает вам экземпляр этого класса из списка. он хранится.

Если у меня есть массив, содержащий список кортежей (класс, экземпляр), довольно легко выполнить линейный поиск соответствующего класса и вернуть соответствующий экземпляр, но я бы предпочел реализовать его как тип словаря. Проблема в том, что «ключ» к словарю относится к типу класса (то есть функции), и JavaScript имена свойств объекта могут быть только строками.

Есть ли способ реализовать словарь с нестроковыми ключами в JavaScript или написать какую-то функцию, которая могла бы генерировать печатаемое имя из функции класса?

1 Ответ

2 голосов
/ 16 апреля 2020

Вместо этого вы можете использовать карту, которая может иметь ключи любого типа:

class C {
  prop = 'val';
}
const map = new Map();
map.set(C, new C());

console.log(map.get(C));

Обратите внимание, что поиск и поиск на карте выполняются с помощью вызовов .get и .set, а не с помощью записи в виде точек / скобок, как у простых объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...