Как работает следующий синтаксис JavaScript? Массив [ 'толчок'] ( '5') - PullRequest
0 голосов
/ 10 октября 2019

При обратном проектировании некоторого запутанного кода JavaScript для CTF я натолкнулся на следующий синтаксис:

array['push']('5');

Он выдвигает '5' в конце массива, чтокажется логичным, но я просто не понимаю, почему этот синтаксис работает, так как мне не удалось найти о нем ничего (ни на Mozilla Developer Network , ни на W3C-сайте и последняя спецификация ECMAScript слишком сложна для понимания).

Я думаю, что это как-то связано с массивами, являющимися особым случаем объектов, но я 'Я недостаточно разбираюсь в JavaScript, чтобы понять это.

Ответы [ 2 ]

3 голосов
/ 10 октября 2019

В JavaScript вы можете получить доступ к свойствам объекта, используя точечные обозначения или квадратные скобки. Так что object.propertyname эквивалентно object['propertyname']. Обычно мы используем квадратные скобки, когда имя свойства вычисляется динамически или не является допустимым идентификатором (например, оно содержит специальные символы). Но ничто не мешает использовать его в других контекстах. Таким образом, array['push'] эквивалентно array.push, и, следовательно, array['push'](5) эквивалентно array.push(5).

0 голосов
/ 10 октября 2019

array['push']('5'); переводится в:

const array = [];
array.push('5');

Поскольку push всегда является методом для массивов, к нему можно обращаться через ассоциацию, например ['push'], или напрямую как свойство.

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