Подтвердить что ты не робот

Поддержка браузера для использования зарезервированного слова в качестве имени свойства в JavaScript

Я пытаюсь использовать "for" в качестве имени свойства объекта. Кажется, он отлично работает в IE7, IE8, Firefox, Chrome и Opera, но, по-видимому, не в Safari.

Я понимаю, что ECMAScript 5 позволяет (как обсуждалось в JavaScript-словах в хэш-ключах).

Могу ли я получить окончательный список браузеров, которые поддерживают/не поддерживают это где-то?

РЕДАКТИРОВАТЬ: На самом деле, автоскринировка названий зарезервированных слов CoffeeScript - вот что заставило меня поверить, что оно работает. После надлежащего повторного тестирования он, похоже, нигде не работает, так что теперь вопрос: есть ли браузеры, разрешающие его согласно спецификации ECMAScript 5?

4b9b3361

Ответ 1

Существует таблица с поддержкой браузера для функций ECMAScript 5: http://kangax.github.com/es5-compat-table/

Зарезервированные слова могут использоваться как имена свойств в IE9, Firefox 3.5+ и Chrome 7+, Safari 5.1 +.

Ответ 2

Вы можете использовать эти слова, но только как строки, а не сокращенные свойства.

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"]);

Мне кажется, что это довольно хорошо.

Ответ 3

Возможно, вопрос заключается не столько в том, могут ли зарезервированные слова использоваться как имена свойств для объектов - они могут. Похоже, реальный вопрос заключается в том, можно ли их использовать голыми (т.е. Не облачившись в кавычки). Голосовое использование зарезервированных слов поддерживается с ES5, но не все интерпретаторы поддерживают функции ES5. Как уже упоминалось, здесь есть хорошая таблица...

http://kangax.github.io/es5-compat-table/#Reserved%20words%20as%20property%20names

Если вы просто выполняете кодировку в NodeJS, вам не нужно беспокоиться об этом типе проблемы. Если вы заботитесь о переносимости своего кода в самых разных средах (без использования языка, такого как CoffeeScript, который компилируется на JavaScript), тогда ваш код должен указывать зарезервированные слова...

определение...

var foo = {'for':'this works'};

доступ к...

foo ['for'];

Ответ 4

после изучения, я думаю, что могу доказать, что использование зарезервированных слов в качестве имен свойств (если это сделано с небольшим здравым смыслом) является безвредным, будь то в синтаксисе obj['name'] или obj.name.

см. fooobar.com/info/168760/...