Книга: JavaScript. Подробное руководство, 6-е издание
5.7.1. Инструкция with
5.7.1. Инструкция with
В разделе 3.10.3 мы обсуждали область видимости переменных и цепочки областей видимости - список объектов, в которых выполняется поиск при разрешении имен переменных. Инструкция with
используется для временного изменения цепочки областей видимости. Она имеет следующий синтаксис:
with (объект) инструкция
Эта инструкция добавляет объект в начало цепочки областей видимости, выполняет инструкцию, а затем восстанавливает первоначальное состояние цепочки.
Инструкция with
не может использоваться в строгом режиме (раздел 5.7.3) и не рекомендуется к использованию в нестрогом режиме: избегайте ее использования по мере возможности. Программный код JavaScript, в котором используется инструкция with
, сложнее поддается оптимизации и наверняка будет работать медленнее, чем эквивалентный программный код без инструкции with
.
На практике инструкция with
упрощает работу с глубоко вложенными иерархиями объектов. В клиентском JavaScript вам наверняка придется вводить выражения, как показано ниже, чтобы обратиться к элементам HTML-формы:
document.forms[0].address.value
Если подобные выражения потребуется записать много раз, можно воспользоваться инструкцией with
, чтобы добавить объект формы в цепочку областей видимости:
with(document.forms[0]) {
// Далее следуют обращения к элементам формы непосредственно, например:
name.value = "";
address.value = "";
email.value = "";
}
Этот прием сокращает объем текста программы - больше не надо указывать фрагмент document.forms[0] перед каждым именем свойства. Этот объект представляет собой временную часть цепочки областей видимости и автоматически участвует в поиске, когда JavaScript требуется разрешить идентификаторы, такие как address. Избежать применения инструкции with
достаточно просто, если записать предыдущий пример, как показано ниже:
var f = document.fоrms[0];
f. name, value = "";
f.address.value = "";
f.email.value =" ";
Имейте в виду, что цепочка областей видимости используется только для поиска идентификаторов и не используется при их создании. Взгляните на следующий пример:
with(o) х = 1;
Если объект о имеет свойство х, то данный программный код присвоит значение 1 этому свойству. Но если х не является свойством объекта о, данный программный код выполнит то же действие, что и инструкция х = 1 без инструкции with. Он присвоит значение локальной или глобальной переменной с именем х или создаст новое свойство глобального объекта. Инструкция with
обеспечивает более короткую форму записи операций чтения свойств объекта о, но не создания новых свойств этого объекта.
- Инструкция IIF
- Инструкция INSERT INTO ... FROM ... UNION ...
- Что дает грамотная должностная инструкция
- Using Double Quotes to Resolve Variables in Strings with Embedded Spaces
- Drawbacks with restore
- 7. AGGREGATION WITH INDEPENDENT WORKS
- Конструкция with-do
- При запуске программы появляется сообщение Инструкция по адресу 0х77ddb1d1 обратилась к памяти по адресу 0x0080002c. Пам...
- 3. Hexadecimal – the way we communicate with micros
- CHAPTER 3 Working with GNOME
- CHAPTER 8 Printing with Fedora
- CHAPTER 15 Remote Access with SSH