Дополнительная документация по JS:
JavaScript - объектно-ориентированный скриптовый язык программирования. Основные архитектурные черты: динамическая типизация, слабая типизация, прототипное программирование, автоматическое управление памятью. JavaScript наиболее широкое применение находит в создании клиентских сценариев (или скриптов). Это означает, что текст сценария передается на компьютер конечного пользователя и там выполняется, внося в страницу дополнительную динамику и расширяя ее возможности.
JavaScript может выполняться на стороне сервера, для этого на сервере должен быть установлен один из движков JavaScript, таких как V8, Rhino, SpiderMonkey.
На основе общедоступной документации в Microsoft был создан "перепроектированый" JavaScript - JScript.
Области видимости переменных. Область видимости переменной - определяет место в тексте скрипта, где переменная может быть "видима", т.е. объявлена и доступна для использования.
Различают две области видимости: глобальную - область видимости уровня страницы (глобальные переменные являются свойства объекта Объект Object Window HTML DOM HTML DOM), локальную - область видимости уровня функции. Переменные объявленные непосредственно в тексте сценария имеют глобальную область видимости, что делает их доступными в любом месте во всех блоках сценариев на странице. Если же переменная объявлена в теле одной из функций, то она получает локальную область видимости и может быть использована только операторами тела данной функции. Грубо говоря, интерпретатор "убивает" локальные переменные как только функция завершит свою работу. Это позволяет сэкономить массу системных ресурсов.
Если для переменной не объявлена область видимости (не использовано объявление при помощи ключевого слова var), эта переменная становиться глобальной, даже если она используется только в области видимости внутри функции.
Ссылки.
Ссылка — это указатель на фактическое местонахождение объекта. В отношении которого действует предположение, что физический объект никогда не может быть ссылкой. Строка — это всегда строка, а массив — всегда массив. Но на один и тот же объект могут ссылаться многие переменные. Поддерживая наборы ссылок на другие объекты, язык предоставляет вам гораздо больше гибкости.
Объект может содержать набор свойств, целиком состоящий из простых ссылок на другие объекты (такие как строки, числа, массивы и т.д.). Когда несколько переменных указывают на один и тот же объект, модификация исходного типа этого объекта отразится на всех переменных.
Контекст JavaScript. Контекст - объект, внутри которого выполняется ваш JavaScript код. Переменная this всегда будет ссылаться на объект, внутри которого код в данный момент работает. Следует помнить, что глобальные объекты фактически являются свойствами объекта window. Это означает, что даже в глобальном контексте переменная this будет ссылаться на объект.
Методы call и apply служат для переключения контекста.
Рассмотрим код, вызывающий конструктор без ключевого слова new, в случае чего this не будет ссылаться на создаваемый объект. Некорректный вызов Person успешно происходит, но возвращается как undefined и создаёт глобальную переменную name. Для отладки (debugging) JavaScript можно перевести его в строгий режим. Для этого наверху файла или тела функции пишется "use strict";.
function Person(name) { "use strict"; this.name = name; } var ferdinand = Person("Евлампий"); console.log(name); //undefined //Евлампий
Операторы манипулированием объекта:
Оператор for…in.
Оператор for…in присваивает переменной поочередно все свойства объекта. Для каждого свойства JavaScript выполняет указанные утверждения. Оператор for…in выглядит следующим образом:
for (variable in object) { statements }
Следующая функция берет ее как аргумент объект и имя объекта. Затем повторяет все свойства объекта и возвращает строку, в которую внесен список имени свойства и значения.
function dump_props(obj, obj_name) { var result = "" for (var i in obj) { result += obj_name + "." + i + " = " + obj[i] + "<br>" } result += "<hr>" return result}
Для объекта car со свойствоми make и model, result выглядел бы так:
car.make=Ford car.model=Mustang
В сценариях часто возникает необходимость отложить выполнение действий на некоторое время или выполнять эти действия с заданной периодичностью. Примером может служить создание "тикающих" часов на web- странице. Для создания таких часов необходимо с периодичностью в одну секунду получать текущее время и выводить его на страницу.
Одной из наиболее мощных DHTML технологий, которую можно реализовать с помощью JavaScript и Основы работы с CSS, является анимация. В DHTML анимации нет ничего особенного – надо лишь периодически изменять одно или несколько свойств стиля одного или нескольких элементов. Чтобы, например, передвинуть изображение влево, надо постепенно увеличивать значение свойства style.left этого изображения, пока последнее не займет требуемое положение. Можно также постепенно изменять свойство style.clip для «открытия» изображения пиксел за пикселом. Никакая DHTML анимация не обходится без метода setInterval() или setTimeout() (для анимации используется также requestAnimationFrame).
Для отложенного выполнения функции используется метод setTimeout, имеющий следующий формат вызова:
timerId = setTimeout("код javascript", timeout);
где
Для отмены отложенного выполнения кода используется метод clearTimeout, которому в качестве параметра передается идентификатор таймера, возвращаемый методом setTimeout:
clearTimeout(timerId);
<script> document.body.style.background = "blue"; setTimeout(function() { document.body.style.background = "yellow"; }, 2000); </script>
Для периодического выполнения функции используется метод setInterval, имеющий следующий формат вызова:
timerId = setInterval("код javascript", period);
где
Для отмены периодического выполнения кода используется метод clearInterval, которому в качестве параметра передается идентификатор таймера, возвращаемый методом setInterval:
clearInterval(timerId);
Например, выводить сообщения каждую секунду
<script>setInterval(function () { alert('My message') }, 1000) </script>