- •Виды различаются от версии языка, на которого ориентированы.
- •Параметры
- •Для атрибутов тегов используются значения по умолчанию
- •Порядок атрибутов в тегах
- •Формат атрибутов
- •7) Css спрайты. Data: uri.
- •«Зачем мне это надо?»
- •Основные достоинства
- •Уровень 1 (css1)
- •[Править]Уровень 2 (css2)
- •[Править]Уровень 2, ревизия 1 (css2.1)
- •[Править]Уровень 3 (css3)
- •10) JavaScript. Что такое и зачем нужен. Альтернативы.
- •Что такое javascript?
- •Что умеет javascript?
- •Уникальность javascript
- •Другие технологии. Альтернативы javascript.
- •Фабрика объектов
- •Создание потомка
- •Простейший dom
- •14) Атрибуты dom объектов и свойства. Чем отличаются.
- •Свойства dom-элементов
- •Синхронизация
- •Возможные значения
- •[Править]Возможности
- •[Править]Объект Ajax
- •[Править]Класс Element
- •16) Как работает Sizzle (примерно).
- •17) Когда js - это плохо. Примеры.
Фабрика объектов
Есть альтернативный способ наследования, который вообще не требует вызова new.
При этом объекты создаются с помощью "фабричных функций" (factory function). Например, в следующем примере это функция Animal, которая производит некие действия и возвращает объект.
01 |
function Animal(name) { |
|
02 |
var speed = 10 |
|
03 |
return { |
|
04 |
name: name, |
05 |
run: function(distance) { |
|
06 |
return distance / speed |
07 |
} |
|
08 |
} |
|
09 |
} |
|
10 |
pet1 = Animal() |
11 |
pet2 = Animal() |
Через замыкания (о функциях и замыканиях) организуются "приватные" члены класса. В примере выше доступ к переменной speed возможен только из функции run .
Задача фабрики объектов - создать объект и инициализировать его.
Создание потомка
Для создания потомка фабрика объектов просто модифицирует объект, создаваемой функцией-родителем.
Рассмотрим пример с созданием Rabbit - потомка Animal:
01 |
function Rabbit(name) { |
|
02 |
|
|
03 |
// вызвать конструктор родителя, |
|
04 |
// получить родительский объект в me |
05 |
var me = Animal(name) |
|
06 |
|
|
07 |
// добавить приватную переменную |
|
08 |
var jumps = 0 |
|
09 |
|
|
10 |
/* добавить новые методы к me */ |
11 |
me.jump = function() { jumps++ } |
|
12 |
me.getJumps = function() { return jumps } |
13 |
|
|
14 |
// поставить правильное свойство конструктора |
15 |
// (делаем вид, что объект создали мы, а не Animal) |
|
16 |
me.constructor = arguments.callee |
|
17 |
|
|
18 |
return me |
19 |
} |
При создании потомка фабричная функция делает следующее:
Создает объект родительского класса
Присваивает ему публичные свойства и методы
Меняет свойство constructor объекта на себя
Кроме того, при необходимости через var объявляются собственные приватные члены, к которым будут иметь доступы все функции, объявленные внутри фабричной.
Фактически, функция берет другой объект и добавляет ему свои методы. Из-за этого такую реализацию наследования иногда называют паразитическим наследованием.
Почему этот способ мой любимый?
Во-первых, потому, что именно такой стиль ООП, как мне кажется, наиболее соответствует по духу яваскрипт.
Он прост и понятен.
В нем есть приватные переменные, которые замечательно сжимаются javascript-минификатором, что существенно сокращает объем скачиваемого посетителем кода и увеличивает производительность, т.к интерпретатор javascript быстрее работает с короткими именами переменных.
13) DOM обходы в JS. Перечислить способы.
14) Атрибуты DOM объектов и свойства. Чем отличаются.
И те и другие имеют имя и значение.
Узлы DOM являются объектами с точки зрения javascript. А у объектов есть свойства. Поэтому
любому узлу можно назначить свойство, используя обычный синтаксис. Значением свойства может быть
любой объект. Это же javascript.
DOM-элемент может иметь любое количество атрибутов.
Атрибуты можно добавлять, удалять и изменять. Для этого есть специальные методы.
Значением атрибута может быть только строка. Это же HTML.
Основным инструментом работы и динамических изменений на странице является DOM (Document Object Model) - объектная модель, используемая для XML/HTML-документов.
Согласно DOM-модели, документ является иерархией. Каждый HTML-тег образует отдельный элемент-узел, каждый фрагмент текста - текстовый элемент, и т.п.
Проще говоря, DOM - это представление документа в виде дерева тегов. Это дерево образуется за счет вложенной структуры тегов плюс текстовые фрагменты страницы, каждый из которых образует отдельный узел.