EcmaScript не различает индексацию свойства по имени или по []
, например.
a.name
буквально эквивалентно
a["name"]
Единственное отличие состоит в том, что числа и т. Д. Не являются допустимым синтаксисом при доступе к именованному свойству
a.1
a.true
и т. Д. Имеют недопустимый синтаксис.
Увы, причина того, что все эти механизмы индексации одинаковы, заключается в том, что в EcmaScript все имена свойств являются строками. например.
a[1]
эффективно интерпретируется как
a[String(1)]
Что означает, что в вашем примере вы делаете:
my_map[[a,b]] = c
Что становится
my_map[String([a,b])] = c
По сути, это то же самое, что и ваш второй пример (однако, в зависимости от реализации, он может быть быстрее).
Если вы хотите поиск с истинным значением, вам нужно будет реализовать его самостоятельно на языке js, и вы потеряете доступ в стиле [:] (-
).