Необычно ли (a в b) синтаксис JavaScript? - PullRequest
2 голосов
/ 19 августа 2011

Я только что наткнулся на следующую веб-страницу и несколько заинтригован использованием ключевого слова in.

http://diveintohtml5.ep.io/examples/input-autofocus-with-fallback.html

  • Это действительный JavaScript?
  • Все ли браузеры принимают это?
  • Как это на самом деле работает?

Они используют этот синтаксис как запасной вариант, когда веб-браузер не поддерживает атрибут autofocus. Так что это заставит меня поверить, что этот синтаксис действителен.

Ответы [ 3 ]

5 голосов
/ 19 августа 2011

Оператор in проверяет, определено ли свойство для объекта. Таким образом, это допустимый Javascript и принимается практически во всех браузерах.
В этом случае код проверяет, является ли «автофокус» свойством нового элемента. Если это так, то, скорее всего, браузер поддерживает autofocus и не будет нуждаться в .focus() (или кто-то может расширять прототипы).

3 голосов
/ 19 августа 2011

Вы можете думать об этом так:

"localStorage" in window; // true
!!window["localStorage"]; // true
window["localStorage"] !== undefined; // true

Эти утверждения в основном одинаковы.

1 голос
/ 19 августа 2011

«автофокус» - произвольный логический атрибут, который ищет скрипт. На самом деле он ничем не отличается от <input id="q" class="autofocus">, за исключением того, что в этом случае сценарию потребуется искать имя класса (которое обычно используют многие сценарии проверки) по сравнению с атрибутом.

Браузер не «поддерживает» его, скрипт заставляет его работать.

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