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);
Комментариев нет:
Отправить комментарий