Доступ к массиву Javascript (со строковым литералом в качестве ключа) - сложность пространства - PullRequest
1 голос
/ 23 мая 2019

Пример объекта:

const myArray = {'attributes':{ 'fullName': 'Foo Bar'};

Во время проверки кода я обнаружил, что один ключ (строковый тип) используется для доступа к объекту в нескольких функциях. Теперь мой вопрос заключается в том, должны ли мы обращаться к объекту напрямую, используя строковый литерал в качестве ключа, например, myArray['attributes']['fullName'] или вместо этого используйте константу, например:

const ATTRIBUTES = 'attributes';
const FULLNAME = 'fullName';
someVar = myArray[ATTRIBUTES][FULLNAME];

Насколько мне известно, последний подход лучше, поскольку он резервирует только один блок памяти. Но у моего друга было другое мнение, он сказал, что если мы будем использовать строковый литерал для ключа, то это не повлияет на память.

Теперь я запутался и не знаю, какой подход лучше. Может ли кто-нибудь помочь мне понять, какой из них лучше с объяснением?

Ответы [ 3 ]

1 голос
/ 23 мая 2019

Нечто подобное не повлияет на производительность. На мой взгляд, второй вариант менее читабелен.

0 голосов
/ 23 мая 2019

Я не знаю о памяти, и я использую первый вариант, но в случае смены ключа мне придется изменить его в нескольких местах, а не в одном, так что для повторного использования кода это не так хорошо

0 голосов
/ 23 мая 2019

Я бы взял

myArray.attributes.fullName

, потому что он показывает компилятору использовать константу для значения вместо использования обозначения brwacket, где структура предназначена для динамического использования.

...