В данном разделе мы остановимся на трех основных моментах:
понятие объекта;
прототип объекта;
методы объекта Object.
Мы не будем очень подробно вникать во все эти моменты, так как при программировании на стороне браузера чаще всего обходятся встроенными средствами JavaScript. Но поскольку все эти средства - объекты, нам нужно понимать, с чем мы имеем дело.
Сначала рассмотрим пример определенного пользователем объекта класса Rectangle, потом выясним, что же это такое:
function Rectangle(a,b,c,d){this.x0 = a;this.y0 = b;this.x1 = c;this.y1 = d; this.area = new Function( "return Math.abs((this.x1-this.x0)*(this.y1-this.y0))");} r = new Rectangle(0,0,30,50);
Этот же пример использовался выше в разделе "Функции" для иллюстрации применения конструктора Function. Здесь мы рассмотрим его в более общем контексте.
Функция Rectangle() - это конструктор объекта класса Rectangle, определенного пользователем. Конструктор позволяет создать экземпляр (объект) данного класса. Ведь функция - это не более чем описание некоторых действий. Для того чтобы эти действия были выполнены, необходимо передать функции управление. В нашем примере это делается при помощи оператора new Rectangle. Он вызывает функцию Rectangle() и тем самым генерирует реальный объект r.
В результате этого создается четыре переменных: x0, y0, x1, y1 - это свойстваобъекта r. К ним можно получить доступ только в контексте объекта данного класса, например:
up_left_x = r.x0;up_left_y = r.y0;
Кроме свойств, внутри конструктора Rectangle мы определили объект areaкласса Function(), применив встроенный конструктор языка JavaScript. Этометоды объекта класса Rectangle. Вызвать эту функцию можно тоже только в контексте объекта класса Rectangle:
sq = r.area();
Таким образом, объект - это совокупность свойств и методов, доступ к которым можно получить, только создав при помощи конструктора объект данного класса и использовав его контекст.
На практике довольно редко приходится иметь дело с объектами, созданными программистом. Дело в том, что объект создается функцией-конструктором, которая определяется на конкретной странице и, следовательно, все, что создается в рамках данной страницы, не может быть унаследовано другими страницами. Нужны очень веские основания, чтобы автор Web-узла занялся разработкой библиотеки пользовательских классов объектов. Гораздо проще писать функции для каждой страницы.