Объекты 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)) // строка очень длинная