function raiseSalary(addition, factor) {
this.salary = addition + this.salary * factor;
}
var petrov = {position: "Salesman", salary: 1000};
var president = {name: "King", salary: 5000};
raiseSalary.call(petrov, 100, 1.1);
raiseSalary.apply(president, [0, 1.2]);
Пользовательские массивы
• Одномерные
l Но можно создать массив массивов, в т.ч. непрямоугольный.
l Обращение по индексу с помощью оператора [].
l Нумерация элементов с 0.
l Есть поле length, хранящее количество элементов.
• Способы создания
l Пустоймассив
var a1 = new Array();
l Массив с заданным количеством элементов
vara 2 = newArray (10);
l Массив с заданными элементами
vara 3 = newArray (10, "и это не длина", 5.5, '!');
l Литеральная форма с заданными элементами
vara 4 = [10, "и это не длина", 5.5, '!'];
• Динамические
l Изменение значения length
l Добавление новых элементов
l Явно не указанные элементы получают значение undefined
Пример 39.
<script>
var a = [1, 2];
a[5] = 5;
document.write(a[4] + "<br/>");
document.write(a[5] + "<br/>");
a.length = 2;
a.length = 5;
document.write(a[4] + "<br/>");
document.write(a[5] + "<br/>");
</script>
Сортировка пользовательских массивов
• Выполняется с помощью метода sort() массива.
• По умолчанию – это сортировка в лексикографическом порядке.
• Если требуется другой порядок, то следует задать свой критерий сравнения в виде функции.
Пример 40
<script>
var a = [1, 2, 15, 23];
a.sort();
document.write(a + "<br/>"); // 1,15,2,23
function compareNumeric(a, b) {
return a - b;
}
a.sort(compareNumeric);
document.write(a + "<br/>"); // 1,2,15,23
</script>
Дополнительные методы пользовательских массивов
Инвертирование порядка элементов | reverse() |
Добавление элемента в конец | push(element) |
Удаление элемента из конца | pop() |
Добавление элемента в начало | unshift(element) |
Удаление элемента из начала | shift() |
Объединение в строку с указанием разделителя | join(separator) |
Удаление и вставка элементов | splice(start, [deleteCount, add1, ..., addN]) |
Копирование части массива | slice(begin, end) |
Пример 41
<html>
<body>
<script>
var a = [1, 2, 15, 23];
a.reverse();
document.write(a + "<br/>"); // 23,15,2,1
a.push(" добавка 1");
document.write(a + "<br/>"); // 23,15,2,1, добавка 1
a.pop();
document.write(a + "<br/>"); // 23,15,2,1
a.unshift(" добавка 2");
document.write(a + "<br/>"); // добавка 2,23,15,2,1
a.shift();
document.write(a + "<br/>"); // 23,15,2,1
//...
// ...
var str = a.join("; ");
document.write(str + "<br/>"); // 23; 15; 2; 1
var b = str.split("; ");
document.write(b + "<br/>"); // 23,15,2,1
a.splice(2, 1, " Замена ");
document.write(a + "<br/>"); // 23,15, Замена ,1
var c = a.slice(1, a.length);
c [0] = "И что будет?";
document . write ( a + "< br />"); // 23,15,Замена,1
document . write ( c + "< br />"); // И что будет?,Замена,1
</script>
</body>
</html>
Виды объектов
• Встроенные
l По сути – библиотеки и базовые объекты
• Пользовательские
l Всё, что создаёт пользователь-программист
• Серверные
l Определяют и предоставляют взаимодействие с сервером
• Клиентские
l Определяют и предоставляют взаимодействие с браузером и документом
BOM и DOM
• Browser Object Model
l Объектная модель для взаимодействия с браузером
l В настоящий момент не стандартизована
l Базовый объект – window
• Document Object Model
l Объектная модель для взаимодействия с документом
l В целом стандартизирована
l Базовый объект – document
Объект window
• Глобальный объект.
• Все объявляемые переменные и объекты становятся его свойствами.
• Содержит либо напрямую информацию о документе, либо ассоциированный массив (карт, map) фреймов (frames).
• Имеет свои свойства, методы и события.
Пример 42. Взаимодействие с пользователем
// Окно с сообщением
alert("Случилось страшное!!!");
// Окно с запросом на подтверждение
// Возвращает true или false
confirm("Хотите поговорить об этом?..");
// Окно со вводом строки
// Возвращает введённую строку
prompt("Вам слово!", "говорите сюда");
Дата: 2019-02-19, просмотров: 277.