Поддержка браузером использования зарезервированного слова в качестве имени свойства в JavaScript
Я пытаюсь использовать "для" в качестве имени свойства объекта. Кажется, он отлично работает в IE7, IE8, Firefox, Chrome и Opera, но, видимо, не в Safari.
Насколько я понимаю, ECMAScript 5 позволяет это (как обсуждалось в ключевых словах JavaScript в хэш-ключах).
Могу ли я получить полный список браузеров, которые поддерживают / не поддерживают это где-то?
РЕДАКТИРОВАТЬ: На самом деле, автоматическая строковая строчка CoffeeScript имен зарезервированных слов свойства, это заставило меня поверить, что это работает После повторного тестирования, похоже, он нигде не работает, поэтому возникает вопрос: есть ли браузеры, которые разрешают это согласно спецификации ECMAScript 5?
4 ответа
Здесь есть таблица, показывающая поддержку браузером функций 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/
Входные данные:
$('.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/
Если вы просто делаете кодирование в NodeJS, вам не нужно беспокоиться об этом типе проблемы. Если вы заботитесь о переносимости вашего кода в самых разных средах (без использования языка, подобного CoffeeScript, который компилируется в JavaScript), тогда ваш код должен заключать в кавычки зарезервированные слова...
определение...
var foo = {'for':'this works'};
доступ к...
foo ['for'];
После изучения, я думаю, я могу доказать, что использование зарезервированных слов в качестве имен свойств (если сделано с небольшим здравым смыслом) безвредно, будь то в obj['name']
или же obj.name
синтаксис.
увидеть этот вопрос