HTML5 [1]
CSS3 [1]
JavaScript [3]
JS in HTML5 [4]
Canvas (Context2D) [1]
Canvas (WebGL) [0]
Browser Technologies [2]
jQuery [1]
ExtJS [0]
Prototype.js [2]
SVG [2]
Browsers [2]
Mozilla Plugins [0]
XUL, Jetpack, etc.
Web [2]
MeowW [4]
iOS [0]
Алгоритмы [0]
Криптография [0]
Теория игр [0]
Теория вероятностей [0]
Математика [1]
Мат. анализ [0]
Алгебра [0]
Дискретная математика [0]
Теория графов [0]
Комбинаторика [0]
Теория чисел [0]
Комплексный анализ [0]
Матлогика [0]
Математическая логика, её связь с теорией алгоритмов и т.п.
Тензоры [0]
Геометрия [0]
Топология [0]
Дифференциальная геометрия [0]
Дифференциальные уравнения [0]
07 Сентября 2011 в 02:41:21
21:12:26
Классы и наследование в prototype

Привет, %username%. Сегодня мы продолжим разговор про prototype. Отложим массивы и ajax на попозже, сегодня поговорим про классы. Очень многим не хватает в JavaScript стандартных классов и разных наследований (как в C++), из-за этого многие вообще не считают JS за язык. А классическая прототипная модель хоть и гибче, но не всем понятна. Лично мне всё понятно, но классов всё равно не хватает.

Class.create

Для создания классов у нас есть метод Class.create. Работает примерно так:

Code
var Animal = Class.create();  Animal.prototype = {  initialize: function(name){  this.name = name;  },  getName: function(){  return this.name;  }  }  var dog = new Animal(‘test’);  dog.getName(); // вернёт test

Также мы можем наследоваться от класса Animal:

Code
var Dog = Object.extend(new Animal(), {  initialize: function(name){  this.name = name;  }  });  var raks = new Dog(‘reks’);  raks.getName(); // используем унаследованный getName, возвратит reks
Так делалось раньше…

Class.create 2.0

На самом деле вышеуказанный пример – устаревший. В последних Prototype объявлять класс стало гораздо проще:

Code
// также объвляем класс Animal  var Animal = Class.create({  initialize: function(name){  this.name = name;  },  getName: function(){  return this.name;  }  });  // а теперь наследование  var Dog = Class.create(Animal, {  initialize: function(name){  this.name = name;  }  });

addMethods: расширяем

Помимо прочего, мы можем ещё и расширить уже существующий класс с помощью метода addMethods:

Code
var dog = new Animal(‘reks’);  dog.say; // undefined  Animal.addMethods({  say: function(){  alert(this.name);  }  });  dog.say();

Злоключение

В следующий раз у нас работа с DOM :).

Просмотров: 1644 | | Теги: create, класс, class, inheriting, Наследование, PROTOTYPE, addMethods
Всего комментариев: 2
1 Web.Dr (14 Сентября 2011 17:47:04) 0  
Давай лучше про ajax
Спам
Материал |
2 Кейтен (14 Сентября 2011 17:48:06) 0  
После DOM. Это будет 4 статья
Спам
Материал |
Имя *:
Email:
Код *: