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