Ответ 1
Существует таблица с поддержкой браузера для функций ECMAScript 5: http://kangax.github.com/es5-compat-table/
Зарезервированные слова могут использоваться как имена свойств в IE9, Firefox 3.5+ и Chrome 7+, Safari 5.1 +.
Я пытаюсь использовать "for" в качестве имени свойства объекта. Кажется, он отлично работает в IE7, IE8, Firefox, Chrome и Opera, но, по-видимому, не в Safari.
Я понимаю, что ECMAScript 5 позволяет (как обсуждалось в JavaScript-словах в хэш-ключах).
Могу ли я получить окончательный список браузеров, которые поддерживают/не поддерживают это где-то?
РЕДАКТИРОВАТЬ: На самом деле, автоскринировка названий зарезервированных слов CoffeeScript - вот что заставило меня поверить, что оно работает. После надлежащего повторного тестирования он, похоже, нигде не работает, так что теперь вопрос: есть ли браузеры, разрешающие его согласно спецификации ECMAScript 5?
Существует таблица с поддержкой браузера для функций ECMAScript 5: http://kangax.github.com/es5-compat-table/
Зарезервированные слова могут использоваться как имена свойств в IE9, Firefox 3.5+ и Chrome 7+, Safari 5.1 +.
Вы можете использовать эти слова, но только как строки, а не сокращенные свойства.
foo['class']; // cool
foo.class; // not cool
Но вот список, который вы запросили. Ни один из них не может быть использован с помощью синтаксиса точки собственности. https://web.archive.org/web/20140902235313/http://javascript.about.com/library/blreserved.htm
Кроме того, только слегка тангенциальный, CoffeeScript замечает это и автоматически строит их для вас. http://jashkenas.github.com/coffee-script/#literals
Input:
$('.account').attr class: 'active'
log object.class
JS Ouptput:
$('.account').attr({
"class": 'active'
});
log(object["class"]);
Мне кажется, что это довольно хорошо.
Возможно, вопрос заключается не столько в том, могут ли зарезервированные слова использоваться как имена свойств для объектов - они могут. Похоже, реальный вопрос заключается в том, можно ли их использовать голыми (т.е. Не облачившись в кавычки). Голосовое использование зарезервированных слов поддерживается с ES5, но не все интерпретаторы поддерживают функции ES5. Как уже упоминалось, здесь есть хорошая таблица...
http://kangax.github.io/es5-compat-table/#Reserved%20words%20as%20property%20names
Если вы просто выполняете кодировку в NodeJS, вам не нужно беспокоиться об этом типе проблемы. Если вы заботитесь о переносимости своего кода в самых разных средах (без использования языка, такого как CoffeeScript, который компилируется на JavaScript), тогда ваш код должен указывать зарезервированные слова...
определение...
var foo = {'for':'this works'};
доступ к...
foo ['for'];
после изучения, я думаю, что могу доказать, что использование зарезервированных слов в качестве имен свойств (если это сделано с небольшим здравым смыслом) является безвредным, будь то в синтаксисе obj['name']
или obj.name
.