Может ли зарезервированное слово использоваться в качестве имени свойства объекта?
Эта проблема возникла косвенно в предыдущем вопросе о переполнении стека: Поддержка браузером использования зарезервированного слова в качестве имени свойства в JavaScript . Ответ казался всеобщим консенсусом Алекса Уэйна :
Вы можете использовать эти слова, но только в виде строк, а не сокращений свойства.
foo ['класс']; // круто foo.class; // не круто
Хотя я думаю, что они, вероятно, более осведомлены в этой области, чем я, и, вероятно, плохая идея использовать зарезервированные слова в некоторых ситуациях, я думаю, что их вывод ошибочен, основываясь на двух моментах:
тестирование зарезервированных слов с использованием их в качестве «сокращенных» свойств
HTMLFormElement делает невозможным не использование зарезервированных слов в «сокращении»
Во-первых, используя список зарезервированных слов, каждый был добавлен как свойство к объекту Object
и HTMLElement
, как obj ["word"]
и obj.word
, а затем извлекается как obj ["слово"]
и obj.word
. В каждом из 63 случаев все восемь тестов работали правильно.
Во-вторых, HTMLFormElement требует, чтобы это работало, потому что он извлекает свои элементы с использованием сокращенной записи. Если
является элементом формы, то form.typeof
== «скаляр».
Из моего опыта , зарезервированные слова - это обычно данные (например, столбец с именем "private"), а не программа. Таким образом, они загрязняют объекты JSON и оттуда ввод, а оттуда HTMLFormElement. Проще говоря, без огромного объема (ИМХО ненужной) работы невозможно сохранить зарезервированные слова , не заставляя работать правильно в сокращении.
Мне кажутся настоящими проблемами:
забота необходимо принять меры, чтобы не конфликтовать с существующими свойствами , незарезервированными словами
(многими, если не всеми) переменными не могут быть зарезервированные слова
использование зарезервированных слов в качестве свойств может быть (но не обязательно) сбивающим с толку
Правильно ли это заключение, что зарезервированные слова как имена свойств и доступ к ним в виде строк или сокращений - это нормально - если к ситуации применяется немного здравого смысла?