- •13. Вложенные функции. Работа с вложенными функциями
- •14. Объекты JavaScript. Понятие объекта. Виды объектов
- •15. Объект String(строка) , его свойства и методы Создание
- •Взятие подстроки: substr, substring, slice
- •Строчные буквы идут после заглавных, поэтому они всегда больше.
- •Ряд букв, например ё, находятся вне основного алфавита.
- •16. Объекты Math, Date, их свойства и методы
- •Функции общего назначения:
- •Создание
- •Возможные аргументы
- •17. Создание пользовательских объектов JavaScript. Добавление свойств и методов
- •Операции со свойствами объекта
- •Методы объекта
- •18. Dom. Понятие объектной модели документа. Методы поиска элементов на веб-странице
13. Вложенные функции. Работа с вложенными функциями
В JavaScript функции могут быть определены внутри других функций. Такие функции называются вложенными:
1 2 3 4 5 6 7 |
function foo(a) { function bar() { return a * a } // Определение вложенной функции
return bar(); // Вернуть значение, возвращаемое вложенной функцией }
document.write (foo(5)); |
Внутри вложенной функции можно обращаться к параметрам и локальным переменным вмещающей функции (внешней):
1 2 3 4 5 6 7 8 9 10 11 12 |
function foo(a) { var x = 0;
function bar() { x = 10; return a * x // Используем локальную переменную x и параметр a, заданные во внешней функции }
return bar(); // Вернуть значение, возвращаемое вложенной функцией }
document.write(foo(5)); |
14. Объекты JavaScript. Понятие объекта. Виды объектов
Объект в JScript — это коллекция свойств (иначе: ассоциативный массив, список), состоящая из пар ключ(имя)-значение. Позволяет сохранять и извлекать значения по их именам.
!!! В JavaScript есть 6 базовых типов данных — это Undefined (обозначающий отсутствие значения), Null, Boolean (булев тип), String (строка), Number (число) и Object (объект).При этом первые 5 являются примитивными типами данных, а Object — нет. Следует различать примитивные типы String, Number и Boolean и не-примитивные «подтипы» Object: String, Number и Boolean соответственно. Это означает, что строку 'Hello, world', например, можно создать и как примитивное значение, и как объект типа String. СРАВНИТЕ:
obj = new String('hello'); //Создаем строку как объект simple = 'hello'; //Создаем примитивное значение
obj.prop = 'text'; simple.prop = 'text'; alert(obj.prop); //text - раз obj обычный объект, то мы можем запросто придать ему еще одно свойство alert(simple.prop); //undefined - а вот simple не объект, и этот номер у нас не пройдет
Фундаментальным отличием объектов от примитивов, является их хранение и копирование «по ссылке». Ссылка — это средство доступа к объекту под различными именами.
test = {prop: 'sometext'}; //Создаем объект со свойством prop test_link = test; //Создаем еще одну ссылку на этот объект alert(test.prop); //sometext alert(test_link.prop); //sometext //Изменяем свойство объекта test_link.prop = 'newtext'; alert(test.prop); //newtext alert(test_link.prop); //newtext /*Можно было бы сказать, что свойство изменилось и там и тут - но это не так. Объект-то один. Так что свойство изменилось в нем один раз, а ссылки просто продолжают указывать туда, куда и указывают. */
Создание объектов. Пустой объект («пустой шкаф») может быть создан одним из двух синтаксисов:
1. o = new Object();
2. o = {}; // пустые фигурные скобки
Обычно все пользуются синтаксисом (2), т.к. он короче.
Например, вот как выглядит создание объекта с тремя свойствами:
var user = {
name: "Homer",
"age": 45,
1: true // Числовые имена свойств автоматически преобразуются в строки.
};
В javaScript существует несколько видов объектов:
встроенные;
клиентские (объекты браузера, в частности объекты HTML-документа);
объекты, которые программист создает самостоятельно (пользовательские).
Встроенные объекты — это предопределенные объекты Number, String, Array, Date, Math, Function, Boolean и др.
Объекты браузера. С точки зрения сценария JavaScript браузер представляется иерархически организованным набором объектов. Сразу отметим, что объекты могут быть вложенными друг в друга. Вот некоторые из них:
window - внутри этого объекта создаются остальные объекты браузера;
window.document - содержит элементы, определяемые на самой странице;
window.document.имя_формы - форма на странице;
window.document.имя_формы.имя_элемента - содержит элементы формы.
Объект window находится в корне иерархии. Когда в окно браузера загружается документ HTML, внутри этого объекта создаются другие объекты -document, parent, frame, location и top.
Объект document содержит в себе другие объекты, состав которых полностью определяется документом HTML, загруженным в окно браузера. Это могут быть формы, ссылки на другие документы HTML или локальные ссылки внутри одного документа, объекты, определяющие адрес URL документа и так далее.
Пользовательские - создаваемые с помощью литерала объекта или оператора new с конструктором. (см. подробнее вопрос 17).
