• Операторные скобки
l {...}
• Ветвление
l if (условие) инструкция;
l if (условие) инструкция; else инструкция;
l Нелогические значения 0, "", null, undefined и NaN считаются ложью, всё остальное – истиной
• Цикл с предусловием
l while(условие) инструкция;
• Цикл с постусловием
l do { ... } while(условие);
• Итерационный цикл
l for(инициализация; условие; действие) инструкция;
• Цикл по элементам
l for(переменная in объект) инструкция;
• Прерывание блока
l break;
l break имяМетки ;
• Переход на следующую итерацию
l continue;
l continue имяМетки;
• Возврат из метода или обработчика
l return;
l return значение ;
• Блок переключателей
l switch (выражение) {
case значение: инструкции;
...
default : инструкции}
l Для сравнения используется строгое равенство
l Можно работать со строками
l Предложений caseможет быть много
l Для прерывания используется break
l Есть предложение default
Функции
• Объявлениефункции (function declaration)
function имя ( парамр 1, ... параметр N) {
телофункции
}
• Формальные и фактические параметры различаются
• Внутри функции объявление переменных с var даёт локальные переменные
• Функции создаются предварительно, до выполнения кода
writeLine(" Итого :");
writeLine(745);
function writeLine(line) {
document.write(line);
document.write("<br/>");
}
• Функции – это объекты, у которых есть имя и значение, и которые можно передавать в функции
writeLine ( writeLine );
/* Будет выведено следующее:
function writeLine(line) { document.write(line); document.write("<br/>"); }
* /
• Функция-выражение (function expression)
function(параметр1, ..., параметрN) {
тело функции
}
l Полученную функцию можно присвоить в переменную.
l Функции создаются не заранее, а когда до них доходит выполнение.
l Условное объявление функций (переменная объявляется заранее, реализация – потом).
l Лучше такой формой не злоупотреблять.
• Можно вызывать функции, полученные в качестве объектов, и передавать им параметры
Пример 35.
function showResult(a, b, calculator) {
document.write(" Операнд 1: " + a + "<br/>");
document.write(" Операнд 2: " + b + "<br/>");
document.write(" Результат : " + calculator(a, b) + "<br/>");
}
function sum(a, b) {
return a + b;
}
showResult(5, 7, sum);//
showResult(8, 3, function (a, b) { return a - b; });
Объекты
• Являются по сути ассоциированными массивами (картами, map)
l ключи – имена свойств (только строки)
l значения – значения свойств (любые типы, включая функции)
• Доступ к свойствам
l ссылка.имяСвойства
l ссылка["имяСвойства"]
• Свойства добавляются и исключаются динамически.
• Переменные хранят ссылки на объекты.
• Свойства объектов являются переменными.
Пример 36. Операции со свойствами
varemployee = {}; // Создание пустого объекта
employee . name = " King "; // Добавление свойств
employee.salary = 5000;
document.write(employee.name + ": " + employee.salary); // Чтениесвойств
delete employee.salary // Удалениесвойства
for (p in employee) { // Ещёодночтениесвойств
document.write(typeof(p) + " " + p + " " + employee[p]);
}
/* Будетвыведено
King: 5000
string name King
/*
// Литеральное создание объекта
varrectangle = {
width : 200,
height: 300,
getArea: function() { return this.width * this.height; }
}; // this в методах при обращении к свойствам обязателен!!!
// Изменениесвойств
rectangle.width = rectangle.height = 5;
rectangle.getPerimeter = function() {
return 2 * (this.width + this.height);
};
// Проверкаработы
document.write(rectangle.getArea() + "<br/>");
document.write(rectangle.getPerimeter() + "<br/>");
Функции-конструкторы
• Конструкторами объектов являются функции
l Их принято называть с большой буквы
l Вызываются с помощью new
l Могут иметь параметры
l Формируют объект, используя слово this
l Возвращают ссылку на созданный объект
Пример 37 .
function Employee(name, salary) {
this.name = name;
this.salary = salary;
this.fired = false;
}
var king = new Employee("King", "5000");
Встроенные объекты
• Конструкторы
l Math
l Date
l RegExp
l Function
l Array
l ...
• «Обёртки»
l String
l Number
l Boolean
Наследование
• Базовым является не наследование классов, а наследование объектов.
• Родительский объект называется прототипом.
• Механизмы наследования заметно отличаются от классического ООП с классами.
• Можно эмулировать почти что классические классы со всеми их возможностями и проблемами.
Обработка исключений
• Обработка исключений
try {
// код, потенциально выбрасывающий исключения
}
catch ( e ) {
// код обработки ошибки
}
finally {
// код, всегда выполняющийся в конце
}
• Блока catch или finally может не быть.
• Для непользовательских методов ошибка обычно «имеет тип» Error, свойства которого могут отличаться в зависимости от браузера.
Выбрасывание исключений
• Метод вправе выбросить своё исключение
throw ссылкаНаОбъектИсключения;
• Можно выбросить вообще любой объект
throw 12345;
• Но лучше выбрасывать что-нибудь вразумительное
throw {name: "OhShit!", message: "Ohhhh"}
throw new Error("Oooops!");
Пример 38. Смена контекста
Смена текущего объекта
var employee = {name: "King", salary: 5000};
with (employee) {
document.write(name + ": " + salary);
}
Дата: 2019-02-19, просмотров: 304.