Объекты 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 = newObject();

2. o = {}; // пустые фигурные скобки

Обычно все пользуются синтаксисом (2), т.к. он короче.

Например, вот как выглядит создание объекта с тремя свойствами:

varuser = {

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

15. Объект String(строка) , его свойства и методы

Создание

a = 'mystring'

b = new String(object) // синтаксис устарел и не используется

c = String(object

Обычно объекты Stringсоздаются неявно с помощью строковых литералов.

var str = "stringliteral"// кавычки любые - без разницы

Строки могут содержать специальные символы. Самый часто используемый–«перевод строки».Он обозначается как \n, например:

alert( 'Привет\nМир' ); // выведет "Мир" на новой строке

Если строка в одинарных кавычках, то внутренние одинарные кавычки внутри должны быть экранированы, то есть снабжены обратным слешем \', вот так:

varstr = 'I\'m a JavaScriptprogrammer';

Свойства и методы

Длина строки(length)– свойство

varstr="My\n";// имеем 3 символа. Третий - перевод строки( \n)alert(str.length);// 3

Получение символа:

1. charAt(позиция)– метод:varstr="jQuery";alert(str.charAt(0));// "j"

2. квадратные скобки:

varstr="Я - современный браузер!";alert(str[0]);// "Я"

Разница между этим способом и charAt заключается в том, что если символа нет – charAtвыдает пустую строку, а скобки – undefined.

Изменение

Содержимое строкив JavaScriptнельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана – она такая навсегда.

Только если так:varstr="строка";str=str[3]+str[4]+str[5];alert(str);// ока

Смена регистра

toUpperCase() и toUpperCase()– методы

alert("Интерфейс".toUpperCase());// ИНТЕРФЕЙСalert("Интерфейс"[0].".toUpperCase());// 'и'

Поиск подстроки

indexOf(подстрока[, начальная_позиция]).Метод возвращает позицию, на которой находится подстрока или -1, если ничего не найдено.

varstr="Widgetwithid"; alert(str.indexOf("Widget"));// 0, т.к. "Widget" найден прямо в начале stralert(str.indexOf("id"));// 1, т.к. "id" найден, начиная с позиции 1alert(str.indexOf("widget"));// -1, не найдено, так как поиск учитывает регистр

Необязательный второй аргумент позволяет искать, начиная с указанной позиции.

Преобразование в массив

split(s, arg) позволяет превратить строку в массив, разбив ее по разделителю s. В примере ниже таким разделителем является строка из запятой и пробела.

varnames = 'Маша, Петя, Марина, Василий';

vararr = names.split(', ');

for (var i = 0; i <arr.length; i++) {

alert( 'Вам сообщение ' + arr[i] );

}

Второй аргумент split

У метода split есть необязательный второй аргумент (arg) – ограничение на количество элементов в массиве. Если их больше, чем указано – остаток массива будет отброшен:

alert("a,b,c,d".split(',',2));// a,b

Разбивка по буквам

Вызов split с пустой строкой разобьёт по буквам:

varstr="тест";

alert(str.split(''));// т,е,с,т

Объединение

concat(string2, string3[, ..., stringN])

string2...stringN–строки, которые будут прибавлены к string1

a = "строка"

b = " очень"

с = " длинная"

alert(a.concat(b,c)) // строка очень длинная

Наши рекомендации