В этой статье я хочу показать на примере, что такое объект и рассмотреть создание объектов JavaScript.
Типы данных в JavaScript: Null, Undefined (неопределенное значение, то есть отсутствие), Boolean (логический), Number (число), String (строка) и Object (объект). Примитивными типами данных являются первые 5, а Object — нет. Так же, условно можно считать, что тип Object имеет «подтипы»: функция (Function), массив (Array), регулярное выражение (RegExp) и прочие.
Это описание слегка упрощено, но на практике этого хватает.
Стоит отметить, что примитивные типы Number, String и Boolean некоторым образом связаны с «подтипами» Object: Number, String и Boolean соответственно.
Это значит, что строку ‘Привет, Мир’, например, можно создать как объект с типом String и как примитивное значение.
Это сделано затем, чтобы программист, работая с примитивными значениями, мог использовать свойства и методы объекта.
Cоздание объектов JavaScript
В отличии от других объектно-ориентированных языков программирования, нам не нужно создавать класс и объект этого класса. Мы сразу можем приступить к созданию объекта.
var test = { simple_property: 'Hello', object_property: { user_1: 'Вася', user_2: 'Миша' }, function_property: function(user) { alert(this.simple_property + ', ' + this.object_property[user]); } } test.function_property('user_1'); //Hello, Вася.
Перед нами объект obj, который имеет 3 свойства: одиночное значение, перечесление и функция. Самый большой интерес представляет свойство function_property, которое содержит функцию. Эту функцию можно назвать методом этого объекта. В этой функции используется ключевое слово this, которое является ссылкой на объект, из которого вызывается функция. Необходимо четко понимать, что this всегда указывает на объект, из которого функция вызвана, а не на объект, к которому она принадлежит.
test.function_property('user_1'); //Hello, Вася. test2 = new Object(); //Еще одна форма создания нового объекта, аналогичная test2={} test.function_property.call(test2, 'user_1'); //ошибка /* Метод call позволяет вызвать функцию от имени другого объекта. В данном случае, мы вызываем метод function_property объекта test, и его this указывает уже не на объект test, а на объект test2. А т.к. в нем нет свойства object_property, то при попытке получить this.object_property[user]скрипт выдаст ошибку */ //попробуем исправить ситуацию test2.simple_property = 'Good day'; test2.object_property = test.object_property; //В данном случае воспользуемся указанием объекта по ссылке, чтобы не дублировать код test.function_property.call(test2, 'user_1'); //Good day, Вася.
Из этого примера видно, что создание и использование объектов не подразделяется на этапы. Объект можно модифицировать в любое время. Это одно из важных отличий от «традиционного» ООП.
В следующей части статьи будет рассмотрено некое подобие игры, в которой ключевое место занимают объекты.
Работа с объектами в JavaScript (часть 2)
Получайте новые статьи блога прямо себе на почту
Хотелось бы научится хотя бы базовым вещам.
Спасибо за статью. Кое что понял.
+
хоть это и не мой «профиль» , но для ознакомления почитать интересно было
Поставила сайт в закладки,спасибо
+
Большое спасибо за интересную статью! Желаю удачи и успехов в Новом Году!
А мы ещё постигаем азы! До этого далеко! Но будем изучать. Поставила сайт в закладки.
В первом листинге вместо test.function_property(‘user_1′); //Hello, Вася. должно быть obj.function_property(‘user_1′); //Hello, Вася.
или надо var obj заменить на var test.
В материалах не желательны ошибки, чтобы не смущать новичков вроде меня.
За статью спасибо!
Спасибо, что сообщили об ошибке. Исправил