вторник, 7 сентября 2010 г.

JavaScript: Class.JavaScript: Классы.

JavaScript: Class.JavaScript: Классы.

Классы это шаблон, описывающий свойства и методы, которыми будет обладать любой объект, созданный на основе этого класса. Для того что бы создать новый класс нужно написать функцию констрактор, например так:

// Функция-конструктор - это обычная функция var Class = function(p){ 	alert('My name is constructor'); 	this.p = p; }

что совершенно идентично:

// Функция-конструктор - это обычная функция function Class(p){ 	alert('My name is constructor'); 	this.p = p; }

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

var o = new Class('karaboz'); alert(o); // выводит [Object object] alert(o.p); // выводит 'karaboz' - теперь это свойство объекта o

А теперь попробуем создать элемент нашего класса не используя ключевое слово new.

var o = Class('karaboz'); // эквивалентно вызову window.Class() alert(o); // выводит undefined, а именно то, что вернула функция Class() alert(window.p); // выводит 'karaboz' - теперь это свойство глобального объекта window

После создания любой функции для неё создаётся пустое пространство .prototype все что записано в него станет видно как методы и параметры. Добавить что-либо в .prototype очень просто:

Class.prototype.method = function(){ 	alert('my name is .method'); }

При вызове метода .method javascript сначала ищет его в самом объекте и только не найдя его там ищет в .prototype. В то же время нужно отметить что .prototype существует только для функции констактора, а не для переменной типа класс. Для лучшего понимания данного утверждения поиграйтесь с кодом:

function Class(p){ 	alert('My name is constructor'); 	this.p = p; }  var newEl = new Class("test1"); alert(newEl.p);  Class.prototype.method1 = function() { 	alert("I'm method1() of Class"); } newEl.method1(); alert("prototype="+newEl.prototype); alert("prototype="+Class.prototype);

Комментариев нет:

Отправить комментарий