Разделы презентаций


1 Объект Array Свойства: length – число элементов в массиве. Оно доступно как

Содержание

Методы : join (), revers (), sort (), push(), unshift(), pop (), shift() Метод: join () Синтаксис: массив.join () или массив.join (разделитель) Если разделителя нет, то используется пустая строка.

Слайды и текст этой презентации

Слайд 1Объект Array

Свойства: length – число элементов в массиве. Оно

доступно как для чтения, так и для записи, то есть

с помощью этого свойства можно менять размерность массива (можно увеличить длину массива, уменьшить ее или удалить из него все элементы).
 
Объект Array Свойства: length – число элементов в массиве. Оно доступно как для чтения, так и для

Слайд 2
Методы : join (), revers (), sort (), push(),

unshift(), pop (), shift()

Метод: join ()
Синтаксис: массив.join ()

или
массив.join (разделитель)
Если разделителя нет, то используется пустая строка.

Методы : join (), revers (), sort (), push(), unshift(), pop (), shift() Метод: join ()

Слайд 3

Преобразует каждый элемент массива в строку, а затем конкатенирует

эти строки, вставляя между элементами заданную строку разделителя.

Возвращает полученную

в итоге строку.

Вызов метода не меняет исходный массив.

Преобразует каждый элемент массива в строку, а затем конкатенирует эти строки, вставляя между элементами заданную строку

Слайд 4
Метод: reverse ()
Синтаксис: arrayObj.reverse ()
Возвращает: Измененный порядок следования элементов

массива на обратный.

Внимание!
Этот метод меняет исходный массив.

Метод: reverse ()Синтаксис: arrayObj.reverse ()Возвращает: Измененный порядок следования элементов массива на обратный.Внимание!Этот метод меняет исходный массив.

Слайд 5
Методы: push(), unshift()
Синтаксис:
arrayObj.push (Значение_или_объект)
arrayObj.unshift (Значение_или_объект)
Добавить элемент (элементы)

в массив:
push – в конец массива;
unshift – в начало массива.

Если добавляемый элемент – другой массив, то он в добавленном будет одним элементом.
Методы: push(), unshift()Синтаксис: arrayObj.push (Значение_или_объект) arrayObj.unshift (Значение_или_объект)Добавить элемент (элементы) в массив:push 	– в конец массива;unshift –

Слайд 6
Например:
var Arr1 = new Array (1,2,3,4,5);
var Arr_r =

new Array (“one”,”two”,”three”);

Arr1.push(Arr_r);
alert (Arr1.length) => выдаст значение, равное шести.
То есть

массив Arr1 будет иметь вид:
1,2,3,4,5,’ “one”,”two”,”three”’
Например: var Arr1 = new Array (1,2,3,4,5);var Arr_r = new Array (“one”,”two”,”three”);Arr1.push(Arr_r);alert (Arr1.length) => выдаст значение,

Слайд 7
Методы: pop (), shift()
Синтаксис:
arrayObj.pop (), arrayObj.shift()

Извлекает элемент из массива

с удалением:
pop - в конце массива;
shift - в начале массива.

Возвращает удаляемый

элемент.
Методы: pop (), shift()Синтаксис:arrayObj.pop (), arrayObj.shift()Извлекает элемент из массива с удалением:pop	- в конце массива;shift 	- в

Слайд 8
Методы concat (), slice () и splice ()
Данные методы

позволяют манипулировать частями массива.

1) Метод concat () объединяет два массива

в один.
Синтаксис:
Arr = array1. concat (array2)
Методы concat (), slice () и splice ()	Данные методы позволяют манипулировать частями массива.	1) Метод concat ()

Слайд 9
Пример:
var a1 = new Array (1,2,3,4,5);
var a2 = new

Array (“a”,”b”,”c”);
var ar = a1. concat (a2);
В результате получим

следующее:
1,2,3,4,5, “a”,”b”,”c”

Пример:	var a1 = new Array (1,2,3,4,5);	var a2 = new Array (“a”,”b”,”c”);	var ar = a1. concat (a2);

Слайд 10
2) Метод slice () возвращает часть массива в

виде отдельного объекта Array
Синтаксис:
array_obj.slice (offset [,end_index])
Первый аргумент данного метода

указывает индекс смещения первого элемента, который нужно поместить в новый массив.

Примечание: Индекс массива начинается с нуля.

2) Метод slice () возвращает часть массива в виде отдельного объекта Array	Синтаксис:	 array_obj.slice (offset [,end_index])	Первый аргумент

Слайд 11
Пример 1:
var Arr1 = new Array (0,1,2,3,4,5,6,7,8);
var Arr2

= Arr1.slice(3);
Получаем массив Arr2, состоящий из элементов (3,4,5,6,7,8).

Примечание:
Исходный массив

не меняется.
Пример 1:var Arr1 = new Array (0,1,2,3,4,5,6,7,8);var Arr2 = Arr1.slice(3);	Получаем массив Arr2, состоящий из элементов

Слайд 12
Второй аргумент (необязательный) – это конечный индекс выделяемого фрагмента

массива, то есть индекс первого элемента, который уже не надо

включать в этот фрагмент.
Пример 2:
var Arr1 = new Array (0,1,2,3,4,5,6,7,8);
var Arr2 = Arr1.slice(3,5);

Получаем массив Arr2, состоящий из элементов (3,4).

Второй аргумент (необязательный) – это конечный индекс выделяемого фрагмента массива, то есть индекс первого элемента, который

Слайд 13
3) Метод splice () – изменяет массив-аргумент, а

также возвращает новый массив, содержащий элементы, удаленные из первого.

Синтаксис:
arr

= array_obj.splice
(begin_index, quantity[,new_array]);
Первый аргумент – начальный индекс (как для метода slice()).
3) Метод splice () – изменяет массив-аргумент, а также возвращает новый массив, содержащий элементы, удаленные из

Слайд 14
Второй аргумент – это количество элементов, которое нужно

удалить (в отличие от slice(), у которого второй аргумент –

это конечный индекс).

Пример 1:
var Arr1 = new Array (0,1,2,3,4,5,6,7,8);
var Arr2 = Arr1.splice(3,2);
Получаем массив Arr2, состоящий из элементов (3,4),
а массив Arr1 – из (0,1,2,5,6,7,8).


Второй аргумент – это количество элементов, которое нужно удалить (в отличие от slice(), у которого второй

Слайд 15
Данный метод позволяет помещать на место удаляемых элементов массива

новые элементы. Все аргументы после второго будут вставлены в массив

в точке удаления.

Третий аргумент (необязательный) – список элементов, которые будут вставлены в массив вместо удаленных. Причем, количество вставляемых элементов не обязательно должно быть равно количеству удаленных.
Данный метод позволяет помещать на место удаляемых элементов массива новые элементы. Все аргументы после второго будут

Слайд 16

Пример 2:
var Arr1 = new Array (0,1,2,3,4,5,6,7,8);
var Arr2 =

Arr1.splice(3,2,”a”,”b”,”c”);

Получаем массив Arr2, состоящий из элементов (3,4),
а

массив Arr1 – из (0,1,2,a,b,c,5,6,7,8).

Пример 2:	var Arr1 = new Array (0,1,2,3,4,5,6,7,8);	var Arr2 = Arr1.splice(3,2,”a”,”b”,”c”); 	 Получаем массив Arr2, состоящий из

Слайд 17
Метод: sort ()
Синтаксис:
arrayObj.sort ()
arrayObj.sort (funct)

funct -

необязательная функция сравнения.

Возвращает: При отсутствии аргумента funct выполняет сортировку

исходного массива в лексикографическом порядке ( по кодам символов).
Метод: sort ()Синтаксис: arrayObj.sort ()arrayObj.sort (funct)  funct - необязательная функция сравнения. Возвращает: При отсутствии аргумента

Слайд 18

При необходимости элементы в начале
преобразуются в строки, чтобы их

можно
было сравнивать.

Для сортировки элементов массива в ином порядке необходимо

задать функцию,
которая сравнивает два значения и выдает число, обозначающее их относительный порядок.

При необходимости элементы в началепреобразуются в строки, чтобы их можно было сравнивать.Для сортировки элементов массива в

Слайд 19
При задании функции сравнения func необходимо указать два аргумента

А и Б.
Функция func должна возвращать:
- значение меньше

нуля, если значение аргумента А меньше Б или следует перед Б;
- ноль, если А и Б эквивалентны;
- значение больше нуля, если А больше Б или следует после Б.
При задании функции сравнения func необходимо указать два аргумента А и Б. Функция func должна возвращать:

Слайд 20
Пример:
function by_down (A,B)
{return (B - A)}
function by_up (A, B)
{return

(A - B)}
var arr1 = new Array (1,

2, 4, 8, 16, 32, 64);
var arr 2 = new Array( );
var arr 3 = new Array( );
var arr 4 = new Array( );
Пример:function by_down (A,B){return (B - A)}function by_up (A, B){return (A - B)}  var arr1 =

Слайд 21
arr 2 = arr1.sort( );

arr 3 = arr2.sort (by_down);
arr

4 = arr2.sort(by_up);

alert (arr2); // по алфавиту
1, 16, 32, 4,

64, 8
alert (arr 3); // по убыванию
64, 32, 16, 8, 4, 2, 1
alert (arr 4); //по возврастанию
1, 2, 4, 8, 16, 32, 64

arr 2 = arr1.sort( );arr 3 = arr2.sort (by_down);arr 4 = arr2.sort(by_up);alert (arr2); 	// по алфавиту1,

Слайд 22
Объект Object
Данный объект определяет все объекты JavaScript. Все остальные

типы объектов, встроенные объекты и определенные в JavaScript объекты наследуют

поведение этого типа.

Основная характеристика этого объекта – способность содержать элементы, то есть другие объекты.
Так как в JavaScript нет определений классов как таковых, то объект может получать новые элементы в любой момент его деятельности.
Объект Object		Данный объект определяет все объекты JavaScript. Все остальные типы объектов, встроенные объекты и определенные в

Слайд 23
В JavaScript можно использовать вместо обычной записи объектов

и свойств (через точку)
форму записи с квадратными скобками, которая

в других языках обычно используется для записи массивов:

myObject.something = “Hello, World!”;
myObject[“something”] = “Hello, World!”;
Эти два оператора совершенно эквивалентны.

В JavaScript можно использовать вместо обычной записи объектов и свойств (через точку) 	форму записи с

Слайд 24
Причем, если этого свойства в объекте раньше не было,

то оно будет создано и добавлено в объект.

Добавление новых свойств

в объект JavaScript расширяет набор данных, хранимых в нем.
Добавление новых методов в объект расширяет его поведение.
Можно наполнять новыми возможностями отдельно взятые объекты, так и можно расширять определение всего типа объекта.
Причем, если этого свойства в объекте раньше не было, то оно будет создано и добавлено в

Слайд 25
Создание объектов JavaScript, определяемых пользователем

Помимо встроенных объектов, язык JavaScript

позволяет реализовать объекты, определяемые пользователем.

1. Применение конструктора Object
Вначале объявляем

объект:
var picture = new Object ();

Создание объектов JavaScript, определяемых пользователем		Помимо встроенных объектов, язык JavaScript позволяет реализовать объекты, определяемые пользователем.	 1. Применение

Слайд 26
Потом в него добавляем свойства:
picture.id = 2;
picture.title

= “Весна”;
picture.date = new Date(“2009/03/08”);

При этом не обязательно ограничиваться простыми

свойствами.
Потом в него добавляем свойства:	picture.id 	  = 2;	picture.title = “Весна”;	picture.date = new Date(“2009/03/08”);	При этом не

Слайд 27

Любое свойство объекта может быть сложным объектом, например:

picture.details =

new Object ();
picture.details.type = “Фотография”;
picture.details.description = new Array (“Дата”,”Место”,”Кто”);


Любое свойство объекта может быть сложным объектом, например:		picture.details = new Object ();	picture.details.type = “Фотография”;	picture.details.description = new

Слайд 28Доступ к свойствам объектов осуществляется с помощью следующей записи:
 

objectName.propertyName
где
objectName - имя объекта в JS;
propertyName - имя свойства,

которое необходимо вызвать.


Доступ к свойствам объектов осуществляется с помощью следующей записи:   objectName.propertyNameгде objectName 	- имя объекта в JS;propertyName

Слайд 29
Можно прикрепить к объекту метод, например:
picture.getAge = function ()


{return new Date() – this.date;}

Здесь в фигурных скобках вычисляется разность

дат между текущей и заданной.

Вызов данного метода может быть таким:
picture.getAge()/(1000*60*60*24*365);
Можно прикрепить к объекту метод, например:	picture.getAge = function () 	{return new Date() – this.date;}	Здесь в фигурных

Слайд 30
2. Объявление объекта с помощью JSON
В JavaScript есть ещё

одна форма записи для создания объектов, использующая ассоциативную природу этих

объектов.
Формат, использующийся для этого, называется JSON (JavaScript Object Notation – нотация записи объектов JavaScript).

2. Объявление объекта с помощью JSON		В JavaScript есть ещё одна форма записи для создания объектов, использующая

Слайд 31
Пример:
var picture =
{ id: 2,
title: “Весна”,
date: new

Date(2009,03,8),
details:
{ type: “Фотография”,
description: [“Дата”,”Место”,”Кто”]
},
getAge:
function() {return new Date()

– this.date;}
}
Пример:var picture ={ id:		 2, title:	 “Весна”, date:	 new Date(2009,03,8), details:	 {	type:	“Фотография”,		description: [“Дата”,”Место”,”Кто”]	 }, 	getAge: 	function()

Слайд 32
Рассмотрим, как устроен формат JSON и как он работает.


У этого есть два правила.

Первое правило.
Объекты представляются в виде

наборов пар “ключ-значение”, причем пары разделяются запятыми, а ключ и значение в парах – двоеточием.
Само определение объекта помещается в фигурные скобки.
Рассмотрим, как устроен формат JSON и как он работает. 	У этого есть два правила.	Первое правило. 	Объекты

Слайд 33
Второе правило.
Массивы представляются в виде списков элементов, разделенных запятыми.

Эти списки помещаются в квадратные скобки.

Объекты и массивы могут быть

вложенными, причем глубина вложения не ограничена.
JSON – это базовая возможность языка JavaScript. Для её использования не требуется никаких дополнительных библиотек или вспомогательного кода.
Второе правило.		Массивы представляются в виде списков элементов, разделенных запятыми. Эти списки помещаются в квадратные скобки.		Объекты и

Слайд 34
JSON в настоящее время широко используется в библиотеках JavaScript:

Prototype, jQuery и др.

JSON легко применять, но она позволяет

создавать только отдельные экземпляры объектов.

Для многократного применения при создании экземпляров объектов рассмотрим следующее:
JSON в настоящее время широко используется в библиотеках JavaScript: Prototype, jQuery и др.			 JSON легко применять,

Слайд 353. Определение типов объектов с помощью прототипов

Данный способ применяется, если

необходимо определить тип объекта со стандартными свойствами, а затем создавать

экземпляры этого типа.

3. Определение типов объектов с помощью прототипов	Данный способ применяется, если необходимо определить тип объекта со стандартными свойствами,

Слайд 36
А: Создание функции-конструктора (структуры объекта)
 

function Picture (arg_id, arg_title, arg_date, arg_details)
{
this.id =

arg_id;
this.title = arg_title;
this.date = arg_date;
this. Details = arg_details;
}
..................

А:  Создание функции-конструктора 	(структуры объекта)     function Picture (arg_id, arg_title, 					arg_date, arg_details)

Слайд 37Оператор this используется в языке JavaScript для ссылки на данный

объект.
В контексте функции Picture () значение this относится к

данной функции, следовательно, this.id на самом деле является сокращенной записью Picture.id.

Функция Picture() в данном случае просто задает структуру объекта Picture и присваивает значение его свойствам: id, title, date и Details.

Оператор this используется в языке JavaScript для ссылки на данный объект. В контексте функции Picture () значение

Слайд 38 В: Инициализация объекта
Производится путем вызова конструктора:
var picture

= new Picture (3, “Весна”,new Date (”2009/03/08”),
{
type: “Фотография”,
description: [“Дата”,”Место”,”Кто”];
}
)

В:  Инициализация объекта	Производится путем вызова конструктора: var picture = new Picture (3, “Весна”,new 	Date (”2009/03/08”),	{		type:

Слайд 39

Для ссылки на значения, хранящиеся в объекте, то есть

на свойства объекта, можно использовать выражение
picture.title
которое в данном

случае выдает значение "Весна".

Для ссылки на значения, хранящиеся в объекте, то есть на свойства объекта, можно использовать выражение

Слайд 40 Объекты могут использовать свойства, которые сами являются другими объектами.

Например, пусть есть простой объект person, определяемый следующим образом:

function person (name_arg)
{
this.name = name_arg;
}

Объекты могут использовать свойства, которые сами являются другими объектами. Например, пусть есть простой объект person, определяемый

Слайд 41

то можно создать новые объекты person с именами

p1 и p2 с помощью операторов:
p1 = new person

("Петров В.Г.");
p2 = new person ("Иванов И.П.");

Доступ к значению свойства этих объектов идет обычным образом:
alert (p1. name);
alert (p2. name);

то можно создать новые объекты person с именами p1 и p2 с помощью операторов: p1 =

Слайд 42
Рассматривая этот пример,
предположим, что есть некий новый объект с

названием emailAddr,
в котором каждому объекту person ставится в соответствие


определенный адрес электронной почты.
Рассматривая этот пример, предположим, что есть некий новый объект с названием emailAddr, в котором каждому объекту person

Слайд 43Этот объект определяется следующим образом:
function emailAddr (name_arg,

addr_arg)
{
this.e_name = name_arg;

this.e_address = addr_arg;
}
Тогда можно создать два новых объекта emailAddr следующим образом:
Этот объект определяется следующим образом:   function emailAddr (name_arg, addr_arg)   {   this.e_name

Слайд 44
e1 = new emailAddr (p1, "petrov@pmi.donetsk.ua");

e2 = new emailAddr (p2, "ivanov@pmi.donetsk.ua");

Чтобы получить адрес электронной

почты человека с фамилией Петров, надо воспользоваться записью e1.e_name.name.

e1 = new emailAddr (p1,

Слайд 45Добавление новых свойств объектов

При помощи операции присваивания в существующий

объект можно добавить новое свойство.
Например, оператор
joe

= new person (“Иванов”);
создает новый объект типа person с именем joe, который имеет только одно свойство - name.
Добавление новых свойств объектов При помощи операции присваивания в существующий объект можно добавить новое свойство. Например, оператор

Слайд 46Теперь при выполнении оператора
joe.age = 30;
в

этот объект joe будет добавлено новое свойство age.
При этом

другие объекты типа person останутся нетронутыми,
то есть свойство age будет иметь только экземпляр объекта joe.
Теперь при выполнении оператора    joe.age = 30;в этот объект joe будет добавлено новое свойство

Слайд 47
Удаление объектов и свойств
 
Удалить объект или его свойство
можно

путем присваивания объекту
или свойству значение null.

После удаления объекта или

свойства
обратиться к нему будет невозможно.

Удаление объектов и свойств  Удалить объект или его свойствоможно путем присваивания объектуили свойству значение null. После

Слайд 48Создание методов
(для третьего способа)

Метод определяется

так же как и обычная функция программы,
а потом связывается

с объектом, используя синтаксис
object.methodName = function_Name;
где
object - имя существующего объекта;
methodName - имя связанного метода;
function_Name - имя функции.
Создание методов (для третьего способа)    Метод определяется так же как и обычная функция программы,

Слайд 49Внимание: При связывании метода с функцией не указываются круглые скобки

().
Если Вы укажите круглые скобки, то это будет не

связывание, а вызов созданной функции.
Для вызова метода используется синтаксис:
  object.methodName (parameters);
То есть при вызове метода используются параметры, которые были определены при создании функции.
Внимание: При связывании метода с функцией не указываются круглые скобки (). Если Вы укажите круглые скобки, то

Слайд 50Определение метода можно включать в определение объекта.
Создадим новую функцию

для вывода всей информации о человеке:
function show_Details ()
{
var

persDet =
"Name: " + this.e_name.name + "\n" +
"Email: " + this.e_address;
alert (persDet);
}
Определение метода можно включать в определение объекта. Создадим новую функцию для вывода всей информации о человеке:function show_Details

Слайд 51 Изменим определение функции emailAddr, чтобы включить в нее ссылку

на функцию show_Details():
function emailAddr (name_arg, addr_arg)

{
this.e_name = name_arg;
this.e_address = addr_arg;
this.showDetails = show_Details;
}
Изменим определение функции emailAddr, чтобы включить в нее ссылку на функцию show_Details():   function emailAddr

Слайд 52 Теперь функцию show_Details() можно вызвать с помощью оператора

e1.showDetails();
Так как переменная e1 является ссылкой на объект emailAddr,

который, в свою очередь, является ссылкой на объект person с помощью переменной p1, то в результате выполнения функции будет выведена следующая информация:
Name: Петров В.Г.
Email: petrov@pmi.donetsk.ua
Теперь функцию show_Details() можно вызвать с помощью оператора  e1.showDetails(); Так как переменная e1 является ссылкой

Слайд 53
Добавление новых
методов – конструкторов в объект

Все объекты имеют

свойство prototype для создания новых конструкторов объекта.
Пусть countChars() – функция

подсчета появления символа в строке, что находится в аргументе.
Тогда создание нового метода происходит по следующему синтаксису:
String. prototype.count = countChars;
Добавление новых методов – конструкторов в объектВсе объекты имеют свойство prototype для создания новых конструкторов объекта.Пусть

Слайд 54
count – новый метод, что станет конструктором объекта String;
countChars

– ссылка на функцию countChars().

После этого новый метод count может

быть применен к любому объекту типа String.

count – новый метод, что станет конструктором объекта String;countChars – ссылка на функцию countChars().После этого новый

Слайд 55
Пример:
……………….
function countChars (arg)
{ var hits = 0;
pos =

this.toLowerCase().indexOf(arg);
while ( pos != -1 )
{ hits ++;

pos = this.toLowerCase().indexOf(arg,pos+1);
}
return(hits);
}
Пример:……………….function countChars (arg){	 var hits = 0; pos = this.toLowerCase().indexOf(arg);	while ( pos != -1 ) 	{

Слайд 56
String. prototype.count = countChars;
//Привязка функции countChars (arg) к
//

новому методу count объекта String.
var myStr = new String(“Некоторая строка

нового текста”);

var numChar = myStr.count(“o”);
alert(“Здесь символ ‘o’ встречается” + numChar + “раз”);
……………………….

String. prototype.count = countChars;//Привязка функции countChars (arg) к // новому методу count объекта String.var myStr =

Слайд 57
Оператор this внутри функции ссылается на тот объект,

что будет идти с методом count.
В примере - переменной

numChar присвоено значение выражения myStr.count(“o”).
Определение метода count() при помощи свойства prototype привязывает функцию countChars (). То есть при обращение к методу count() вызывается функция countChars().
Оператор this внутри функции ссылается на тот объект, что будет идти с методом count. В примере

Слайд 58
Вывод:
Функция – метод-конструктор добавляется только через свойство prototype,

которое при обращении к добавленному конструктору упоминать не надо.


Вывод: Функция – метод-конструктор добавляется только через свойство prototype, которое при обращении к добавленному конструктору упоминать

Слайд 59
Отражение объектов
Механизм отражения позволяет выяснить, какие свойства и методы

существуют у объекта.
В JavaScript есть простой способ для этого

– это применение цикла for…in.
Например,
for (name in obj)
{
var value = obj[name];
document.writeln (name+” ”+ value +”
”);
}
Отражение объектов		Механизм отражения позволяет выяснить, какие свойства и методы существуют у объекта. 		В JavaScript есть простой

Слайд 60
Объект Function
Функции немного напоминают методы классов из объектно-ориентированных языков

(ООЯ), таких как Java и C#, но на самом деле

довольно сильно от них отличаются.
В JavaScript Function – объект верхнего уровня, существующий независимо от других объектов, в отличии от методов объектов в ООЯ. Любая функция в JavaScript является объектом типа Function.

Объект Function		Функции немного напоминают методы классов из объектно-ориентированных языков (ООЯ), таких как Java и C#, но

Слайд 61
1. Объявление функций
Работа с функциями делится на два этапа:
а)

В начале мы объявляем функцию, определяя код, который должен выполняться

при вызове этой функции;
б) потом вызываем эту функцию (или какой-то объект вызывает ее за нас).

Существует два базовых способа объявления функции:

1. Объявление функций	Работа с функциями делится на два этапа:а) В начале мы объявляем функцию, определяя код,

Слайд 62
- можно объявить именованную функцию как объект верхнего уровня;
-

можно объявить встроенную функцию.

Объявление именованной функции

В этом случае синтаксис объявления

будет выглядеть примерно как в других скриптовых языках, например, в PHP.

- можно объявить именованную функцию как объект верхнего уровня;	- можно объявить встроенную функцию.	Объявление именованной функции	В этом

Слайд 63
Пример 1.
function Hello ()
{ return “Hello World!”}

Hello();

В этом

случае функция определяется на этапе синтаксического анализа. В этом синтаксисе

ничего особенного нет.


Пример 1.	function Hello ()	{ return “Hello World!”}	Hello();	 В этом случае функция определяется на этапе синтаксического анализа.

Слайд 64
Объявление как встроенной функции (анонимной)
Пример 2.
var Hello = function

()
{ return “Hello World!” }
Hello();
А в этом случае функция определяется

в момент выполнения.
Здесь мы объявили переменную верхнего уровня Hello и присвоили ей значение.
Объявление как встроенной функции (анонимной)	Пример 2.	var Hello = function ()	{ return “Hello World!” }	Hello();	А в этом

Слайд 65
В данном случае значением является анонимная функция, определенная с

помощью ключевого слова function ().

Этот код практически эквивалентен коду

из Примера 1, но он показывает один интересный способ применения встраиваемых или анонимных функций.
В данном случае значением является анонимная функция, определенная с помощью ключевого слова function (). 		Этот код

Слайд 66
Пример 3.
var greeter =
{
traditional : function

()
{
return “Hello, World!”;
}
unusual : function ()
{
return “howdy, Globe!”;
}
}

Пример 3.var greeter = {  traditional : function ()	{ 		return “Hello, World!”;	}	unusual : function ()	{		return

Слайд 67

Здесь greeter – это объект, объявленный с помощью синтаксиса

JSON.

У этого объекта есть два свойства, которые представляют собой

анонимные функции, объявленные с помощью того же синтаксиса, что и в Примере 2.

Обращение к функции: greeter.traditional();


Здесь greeter – это объект, объявленный с помощью синтаксиса JSON. 				У этого объекта есть два свойства,

Слайд 68

После выполнения этого кода у нас не будет глобальных

ссылок на данные функции,
а будет только ссылка на сам

объект greeter, и мы сможем обращаться
- к функциям
и
- к свойствам этого объекта.

После выполнения этого кода у нас не будет глобальных ссылок на данные функции, 		а будет только

Слайд 69
В этом примере мы практически создали объект с методами.

Во

всех трех примерах происходит одно и то же – создание

объектов Function. Единственное различие примеров 1 и 2 от примера 3 – в способе обращения к созданной функции.

В этом примере мы практически создали объект с методами.	Во всех трех примерах происходит одно и то

Слайд 70
Создать функцию можно не только конструкцией function, но и

с помощью конструктора Function:
var имя_функции = new Function ([arg_n1,

[... Arg_nN,]] тело_функции)
Все параметры являются строками.

Вначале определяется список формальных параметров, а потом строка, содержащая операторы тела функции.

Создать функцию можно не только конструкцией function, но и с помощью конструктора Function: 	var имя_функции =

Слайд 71
Пример 4.
Задание функции с одним числовым параметром, возвращающей

произведение этого числа на число PI:
var PI_n = new

Function
("n",
"if (typeof n != 'number')
{ l=null}
else
{l= n*Math.PI};
return l;");

Пример 4. 	Задание функции с одним числовым параметром, возвращающей произведение этого числа на число PI: 	var

Слайд 72


Вызов объявленной функции PI_n:
а) PI_n (6); //

ответ 18.849555
б) PI_n (“abc”); // ответ null


Вызов объявленной функции PI_n: 	а) PI_n (6); 		// ответ 18.849555	б) PI_n (“abc”); 	// ответ null

Слайд 73
Можно создать ссылки переменных на функции.
Пример 5:
function f1 ()

{alert(“Функция 1”)};
function f2 () {alert(“Функция 2”)};
if (i == 1) {func

= f1} else {func = f2};

func();
Здесь мы при i = 1 привязываем к переменной func функцию f1(), иначе - функцию f2().
Можно создать ссылки переменных на функции.	Пример 5:	function f1 () {alert(“Функция 1”)};	function f2 () {alert(“Функция 2”)};	if (i

Слайд 74
Аналогично можно создать ссылки элементов массива на функции и

вызывать эти функции через элемент массива.
Пример 6.
function f1 ()

{alert(“Функция 1”)};
function f2 () {alert(“Функция 2”)};
var Arr = new Array ();
Arr[0] = f1;
Arr[1] = f2;
for (i=0; i < Arr.length; i++) {Arr [i] ()};
Аналогично можно создать ссылки элементов массива на функции и вызывать эти функции через элемент массива. 	Пример

Слайд 75
Свойства объекта Function

1. Свойство-прототип, которое позволяет любому объекту Function

выступать в роли конструктора объекта. В этом случае функция должна

вызываться с помощью ключевого слова new.
Свойства объекта Function	1. Свойство-прототип, которое позволяет любому объекту Function выступать в роли конструктора объекта. В этом

Слайд 76

2. Свойство length, которое позволяет определить, сколько формальных

параметров было использовано при определении функции.

2. Свойство length, которое позволяет определить, сколько формальных параметров было использовано при определении функции.

Слайд 77

3. Свойство аrguments – списковый массив, хранящий переданные в

функцию фактические параметры.

Этот массив создается при входе в тело

функции.

Локальный объект arguments имеет следующие свойства:
3. Свойство аrguments – списковый массив, хранящий переданные в функцию фактические параметры. 	Этот массив создается при

Слайд 78

а) length - количество фактических параметров переданных функции при

ее вызове. Это количество можно узнать так:
аrguments. length
или
function_name.аrguments. length

а) length - количество фактических параметров переданных функции при ее вызове. Это количество можно узнать так:

Слайд 79
Пример 1:
function calls (q,r)
{
alert(calls.length);
alert(arguments.length);
return sum

(q,r)
}
calls (1,2,3,4,5);
Тогда ответы будут такими:
calls.length => 2
arguments.length => 5

Пример 1:	function calls (q,r)	{	 alert(calls.length);	 alert(arguments.length);	 return sum (q,r)	}  calls (1,2,3,4,5);	Тогда ответы будут такими:	calls.length 		=>

Слайд 80
б) Свойство callee - всегда ссылается на функцию, которая

выполняется в данный момент и поэтому возвращает ссылку на саму

себя.

Является свойством объекта arguments функции, а не самой функции.

Это свойство обеспечивает возможность рекурсивного вызова безымянных функций.

б) Свойство callee - всегда ссылается на функцию, которая выполняется в данный момент и поэтому возвращает

Слайд 81
Пример 2:
function F ()
{
if (x

arguments.callee(x - 1)};
}
var result1 = F(6);
document.write (result1 + "
");

result1 => 720


Пример 2: function F () {if (x 720

Слайд 82
Пример 3:
function Factorial ()
{
document.write(‘Создаем анонимную функцию

вычисления факториала
');
return function (x)
{

if (x <= 1) return 1;
return x * arguments.callee(x - 1);
};
}
Пример 3: function Factorial () {	document.write(‘Создаем анонимную функцию вычисления факториала');	return function (x)   {

Слайд 83
var result1 = Factorial ()(6);
document.write (result1

+ "
");

result1 => 720

var result2 = Factorial (6);


document.write (result2 + "
");
result2 => ответа нет

Слайд 84
4. Свойство caller - возвращает ссылку
на объект Function,

представляющий
функцию, вызвавшую исходную.
Если свойство имеет значение null, то

функция вызвана из верхнего уровня
сценария, а не из другой функции.


4. Свойство caller - возвращает ссылку 	на объект Function, представляющий 	функцию, вызвавшую исходную.		 Если свойство имеет

Слайд 85
Пример 4:

function Vizov1 (q,r)
{
document.write("1. Vizov1.length = "

+ Vizov1.length + "
");

document.write("2. arguments.length = " + arguments.length

+ "
");
}

Пример 4:	function Vizov1 (q,r)	{ document.write(

Слайд 86
1. Vizov1 (5,10);

2. Vizov1 (5,10,15,20);

При первом вызове Vizov1

будет:
1. Vizov1.length = 2 2. arguments.length = 2
При втором

Vizov1 :
1. Vizov1.length = 2 2. arguments.length = 4
1. 		Vizov1 (5,10);			2. 		Vizov1 (5,10,15,20); 				При первом вызове Vizov1 будет:	1. Vizov1.length = 2 2. arguments.length =

Слайд 87
Пример 5:
function Vizov2 (q,r)
{ return sum (q,r) }
function

sum (a,b)
{
document.write(“3. sum.caller=“ +sum.caller + “
”);
document.write("4. sum.arguments.callee

= " + sum.arguments.callee + "
");
document.write("5. arguments.callee = " + arguments.callee + "
");
return a + b;
}



Пример 5:	 function Vizov2 (q,r){ return sum (q,r) }function sum (a,b)	 {	document.write(“3. sum.caller=“ +sum.caller + “”);

Слайд 88
var r2 = Vizov2 (5,10,35,40);
document.write(r2 + "
");

Результаты работы

этих функций:

3. sum.caller = function Vizov2(q, r) { return sum(q,

r); }

var r2 = Vizov2 (5,10,35,40); 	document.write(r2 +

Слайд 89
4. sum.arguments.callee = function
sum(a, b)
{ document.write("3. sum.caller

= " + sum.caller + "");
document.write("4. sum.arguments.callee = "

+ sum.arguments.callee + ""); document.write("5. arguments.callee = " + arguments.callee + "");
return a + b; }



Слайд 90
5. arguments.callee = function sum(a, b)
{ document.write("3. sum.caller

= " + sum.caller + "");
document.write("4. sum.arguments.callee = "

+ sum.arguments.callee + ""); document.write("5. arguments.callee = " + arguments.callee + "");
return a + b; } 15

Слайд 91
! Все свойства объекта Function становятся доступными только при

ее вызове.
Поэтому доступ к ним возможен только из тела

функции.
! Все свойства объекта Function становятся доступными только при ее вызове. 		Поэтому доступ к ним возможен

Слайд 92
Методы объекта function
служат для вызова функции

a) метод call()

– принимает произвольное количество аргументов:
- первый аргумент зарезервирован под объект

контекста функции
(рассмотрим немного позднее);
- последующие аргументы передаются функции как ее аргументы, то есть второй аргумент метода call() будет первым аргументом функции и т.д.
Методы объекта function		служат для вызова функции	a) метод call() – принимает произвольное количество аргументов:	- первый аргумент

Слайд 93
Пример.
var f = function (name, age)
{
return {name:name,

age:age};
}

f.call(null, Vova,20);
Свойство name будет иметь Vova,
а свойство age – 20.

Пример. var f = function (name, age){ 	return {name:name, age:age};}f.call(null, Vova,20);	Свойство name будет иметь Vova,а свойство

Слайд 94

b) метод apply () – работает почти так же,

но он ожидает,

- что все аргументы для вызова функции

будут помещены в массив, передаваемый методу apply () в виде второго аргумента;

- все аргументы после второго будут игнорироваться.



b) метод apply () – работает почти так же, но он ожидает, 	- что все аргументы

Слайд 95

Продолжение примера:
f. apply (null, [Vova,20]);
Свойство name также будет иметь

значение Vova,
а свойство age – 20.

Продолжение примера:	f. apply (null, [Vova,20]);	Свойство name также будет иметь значение Vova,	а свойство age – 20.

Слайд 96
Контекст функции

Так как объекты Function являются объектами верхнего уровня,

то это позволяет обращаться с ними не только как методами

объектов.
Это меняет весь образ написания кода в функциях и передачи им аргументов.
В JavaScript оператор this обозначает объект, метод которого вызывается.
Контекст функции		Так как объекты Function являются объектами верхнего уровня, то это позволяет обращаться с ними не

Слайд 97
Пусть мы объявили объект, содержащий свойство:
var c =

{item: “лекция”};
Мы здесь поместили в объект свойство item. Если нам

нужен метод, которым будем считывать значение этого свойства, то это свойство можно обозначить как this.item, например:
var c =
{ item: “лекция”,
describe: finction ()
{“Я нахожусь на”+ this.item}
};
Пусть мы объявили объект, содержащий свойство:		 var c = {item: “лекция”};		Мы здесь поместили в объект свойство

Слайд 98
При взгляде на этот код возникает впечатление, что мы

создали объект с методом, но это не так.
Функция не привязана

к объекту, поэтому объект будет передаваться ей как скрытый дополнительный аргумент при вызове.
Ключевое слово this обозначает этот скрытый аргумент, который называется объектом контекста.
(Во многих ООЯ присутствует этот механизм, в чем отличие?)
При взгляде на этот код возникает впечатление, что мы создали объект с методом, но это не

Слайд 99
В JavaScript с помощью методов Function.call() и Function.apply() мы

можем заменить объект контекста другим.
Пример:
var p={item:”tea”, act:”drink”};
var c=
{ item: ”chair”,
act: ”sitting in”,
ask: function

()
{return “who’s been”+this.act+” my ”+this.item;}
};
В JavaScript с помощью методов Function.call() и Function.apply() мы можем заменить объект контекста другим. 	Пример:	var p={item:”tea”,

Слайд 100
Первый вызов: c.ask();
Результат: “who’s been sitting in my chair”

Второй

вызов: c.ask.call(p);
Результат: “who’s been drink my tea”

В этом примере –

два объекта:
p – чай,
c – кресло.
В каждом объекте – два свойства:Item и act: act описывает способ возможного взаимодействия с предметом.

Первый вызов: c.ask();	Результат: “who’s been sitting in my chair”	Второй вызов: c.ask.call(p);	Результат: “who’s been drink my tea”		В

Слайд 101
Мы определили функцию ask(), которая создает простые предложения.
Но

мы её прикрепили к объекту c, а не p.

Поэтому

мы можем вызвать её для кресла простым оператором c.ask(),
но чтобы вызвать её для чая, нам понадобилось применить метод call():
c.ask.call(p).
Мы определили функцию ask(), которая создает простые предложения. 		Но мы её прикрепили к объекту c, а

Слайд 102
Для второго случая мы обращаемся к функции как c.ask(),

а потом передаем p как первый (и данном случае единственный)

аргумент при вызове call().
Когда функция ask() вызывается таким способом, то она относится к объекту p, а не c.
Для применения функции к разным многим объектам лучше определить тип объекта с конструктором и прототипом, как мы это делали ранее в теме
”Добавление новых методов – конструкторов в объект”.
Для второго случая мы обращаемся к функции как c.ask(), а потом передаем p как первый (и

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика