Познакомьтесь, JavaScript [Кайл Симпсон] (pdf) читать постранично, страница - 35
Книга в формате pdf! Изображения и текст могут не отображаться!
[Настройки текста] [Cбросить фильтры]
console.log("Welcome, students!");
}
173
Приложение А. Дальнейшее изучение
var mathClass = new Classroom();
mathClass.welcome();
// Welcome, students!
Во внутренней реализации создается та же прототипическая связь, но этот синтаксис классов укладывается в рамки классово ориентированного паттерна
проектирования намного четче, чем «прототипические
классы».
Б
Практика,
практика,
практика!
В этом приложении рассматриваются некоторые
упражнения с предлагаемыми решениями. Они помогут потренироваться в применении концепций,
описанных в книге.
Сравнения
Потренируемся в работе с типами значений и сравнениями (глава 4, столп 3), в которых должны быть
задействованы преобразования типов.
Функция scheduleMeeting(..) должна получать время
начала встречи (строка «чч:мм» в 24-часовом формате) и ее продолжительность (в минутах). Функция
должна вернуть true, если встреча приходится полностью на рабочий день (в соответствии с временем,
заданным в dayStart и dayEnd); если встреча выходит
за рамки рабочего дня, возвращается false.
const dayStart = "07:30";
const dayEnd = "17:45";
function scheduleMeeting(startTime,durationMinutes) {
// ..TODO..
}
scheduleMeeting("7:00",15);
scheduleMeeting("07:15",30);
scheduleMeeting("7:30",30);
scheduleMeeting("11:30",60);
scheduleMeeting("17:00",45);
176
//
//
//
//
//
false
false
true
true
true
Замыкания
scheduleMeeting("17:30",30); // false
scheduleMeeting("18:00",15); // false
Попробуйте сначала решить задачу самостоятельно.
Рассмотрите возможность использования операторов
проверки равенства и операторов относительного
сравнения, а также учтите влияние преобразования
типов на этот код. Когда у вас появится работающий
код, сравните свое(-и) решение(-я) с кодом из раздела «Предлагаемые решения» в конце приложения.
Замыкания
Теперь попрактикуемся в использовании замыканий
(глава 4, столп 1).
Функция range(..) получает в первом аргументе
число, представляющее первое числовое значение
в диапазоне. Второй аргумент также является числом,
представляющим вторую границу диапазона (включительно). Если второй аргумент опущен, должна
возвращаться другая функция, которая рассчитывает
получить этот аргумент.
function range(start,end) {
// ..TODO..
}
range(3,3); // [3]
range(3,8); // [3,4,5,6,7,8]
range(3,0); // []
177
Приложение Б. Практика, практика, практика!
var start3 = range(3);
var start4 = range(4);
start3(3); // [3]
start3(8); // [3,4,5,6,7,8]
start3(0); // []
start4(6); // [4,5,6]
Попробуйте сначала решить задачу самостоятельно.
Когда у вас появится работающий код, сравните свое
решение с кодом из раздела «Предлагаемые решения»
в конце приложения.
Прототипы
Наконец, потренируемся в использовании this и объектов, связанных через прототип (глава 4, столп 2).
Определите в программе модель «однорукого бандита» с тремя колесами, которые могут вращаться по
отдельности вызовом spin(), а затем выводит текущие
значения всех колес вызовом display().
Базовое поведение одного колеса определяется приведенным ниже объектом reel . Однако игровому
автомату потребуются отдельные объекты reel, которые делегируют обращения reel, и каждый из этих
объектов должен иметь свойство position.
178
Прототипы
Объект reel умеет только выводить свой текущий
символ на колесе вызовом display(), но «однорукие
бандиты» обычно выводят по три символа на колесо:
текущую позицию (position), позицию выше (posi
tion - 1) и позицию ниже (position + 1). Таким образом, при выводе «однорукого бандита» должна
выводиться сетка символов 3 x 3.
function randMax(max) {
return Math.trunc(1E9 * Math.random()) % max;
}
var reel = {
symbols: [
"X", "Y", "Z", "W", "$", "*", "
Последние комментарии
7 часов 4 минут назад
1 день 6 часов назад
1 день 6 часов назад
1 день 6 часов назад
1 день 6 часов назад
1 день 6 часов назад