Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы с 13 по 18 3.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
119.75 Кб
Скачать

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).