Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Прототип



Обычно мы имеем дело со встроенными объектами JavaScript, такими как Data, Array и String. Собственно, почти все, что изложено в других разделах курса (кроме иерархии объектов DOM) - это обращение к свойствам и методам встроенных объектов. В этом смысле интересно одно свойство объектов, которое носит название prototype. Прототип - это другое название конструктора объекта конкретного класса. Например, если мы хотим добавить метод к объекту класса String, то мы можем это сделать следующим образом:

String.prototype.out = new Function("a", "a.write(this)"); var s = "Привет!"; s.out(document); // Будет выведено: Привет!

Для объявления нового метода для объектов класса String мы применили конструктор Function. Есть один существенный нюанс: новыми методами и свойствами будут обладать только те объекты, которые порождаются после изменения прототипа объекта. Все встроенные объекты создаются до того, как JavaScript-программа получит управление, что существенно ограничивает применение свойства prototype.

Тем не менее покажем, как можно добавить метод к встроенному в JavaScript классу. Примером будет служить встроенный поименованный Image. Задача состоит в том, чтобы разобрать URL картинки таким же образом, как и URL объекта класса Link, т.е. снабдить объект класса Image дополнительными методами protocol (), host () и т.п.:

function pr(){ a = this.src.split(':'); return a[0]+':';} function ho(){ a = this.src.split(':'); path = a[1].split('/'); return path[2];} function pa(){ path = this.src.split('/'); path[0]=''; path[2]=''; return path.join('/').split('///').join('/');} Image.prototype.protocol = pr;Image.prototype.host = ho;Image.prototype.pathname = pa; document.write("<IMG NAME=i1 SRC='image1.gif'><BR>");document.write(document.i1.src+"<BR>");document.write(document.i1.protocol()+"<BR>");document.write(document.i1.host()+"<BR>");document.write(document.i1.pathname()+"<BR>");

3.3. Добавление методов к классу Image

Как известно, HTML- парсер разбирает HTML-документ и создает встроенные объекты раньше, чем запускается JavaScript- интерпретатор. Поэтому основная идея нашего подхода заключается в том, чтобы переопределить конструктор Image раньше, чем он будет использован. Поэтому мы создаем объект Image на странице через JavaScript-код. В этом случае сначала происходит переопределение класса Image, а уже после этого создается встроенный объект данного класса.

Примечание. При работе с Internet Explorer данный пример работать не будет. Причина в том, что хотя свойство prototype имелось в наличии у String (см. предыдущий пример), у Image такого свойства в данном браузере уже не существует. Однако в Mozilla Firefox все работает корректно.





Дата публикования: 2015-01-24; Прочитано: 224 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...