Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
HTML и JavaScript.doc
Скачиваний:
21
Добавлен:
11.12.2018
Размер:
1.61 Mб
Скачать

Возможности расширения

При необходимости можно расширять функциональность стандартных классов или конкретных объектов. К любому стандартному классу можно добавить свой метод, при помощи подобного кода:

String.prototype.extension = function() {return “Hello!”;}

Такая возможность полезна для расширения функциональности иерархии классов в старых браузерах. Просто проверяем, есть ли нужная нам функциональность и добавляем ее при необходимости.

Экземпляры и классы

Бывает необходимость создать методы, доступные для использования без создания экземпляров классов. Для программировавших в C++ достаточно сказать, что это аналог static-методов. Для примера рассмотрим следующий код:

function Rectangle(w, h)

{

this.width = w;

this.height = h;

}

Rectangle.prototype.area = function() { return this.width * this.height; }

Rectangle.max = function(a, b)

{

if (a.area() > b.area()) return a;

else return b;

}

var r1 = new Rectangle(1, 2);

var a = r1.area();

var r2 = new Rectangle(3, 4);

var bigger = Rectangle.max(r1, r2);

Обратите внимание на то, что метод max вызывается через обращение к классу, а не к объекту. Это позволяет обойтись без создания экземпляра класса.

Общие методы класса Object

Есть три полезных метода класса Object, которые бывает нужно перекрывать, чтобы внести особую функциональность для объектов отдельного класса.

  • Метод toString() служит для создания строкового представления объекта. Он автоматически вызывается каждый раз, когда объект необходимо преобразовать в строку. Естественно, он должен возвращать строку.

  • Метод valueOf() вызывается при попытке преобразования объекта к какому-либо элементарному типу данных.

  • Метод compareTo() служит для задания особого процесса сравнения двух объектов. В качестве аргумента он получает объект, с которым необходимо произвести сравнение. Метод должен возвращать числовое значение (обычно одно из традиционного набора: 0, 1, -1), по которому определяется отношение.

Интеграция html и JavaScript

Существует два метода интеграции: интеграция в веб-документ при помощи элемента script и интеграция в данные.

Элемент script

JavaScript-код в самом простом случае можно записывать в качестве содержимого элемента script:

<script><![CDATA[

alert(‘Hello!’);

]]></script>

Данный вариант удобен для встраивания небольшого кода, уникального для веб-до­ку­мента. Скобки <![CDATA[…]]> рекомендуются для интеграции с XHTML-документами, для защиты от ошибок обработки XML-разметки.

Однако чаще всего скрипты хранятся в отдельных файла и подключаются к веб-документу при помощи того же элемента script:

<script src=“file.js”></script>

Обратите внимание, закрывающий тэг элемента script указывается даже при отсутствии кода в содержании элемента. При подключении внешнего файла любой код в содержа­нии элемента игнорируется.

Обычно почти весь JavaScript-код подключают и записывают в служенной части веб-документа — элементе head. Объявления, сделанные в одном участке документа, доступны во всех последующих.

Интеграция в данные

Для интеграции в данные существует две возможности: обработчики событий и URI-адрес. Для описания обработчика события достаточно записать код в качестве значения соответствующего атрибута. Например, следующий код выводит сообщение при нажатии на кнопку:

<input type=”submit” onclick=”alert(‘Hello!’);” />

В URI-адресе JavaScript-код записывается после признака протокола “javascript:”:

<a href=”javascript: alert(‘hello!’);”>click</a>

На данном методе поострено большинство атак XSS, при которых происходит внедрение кода, например, в адреса гиперссылок или CSS, и последующая передача данных на сторонний сервер.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]