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] |
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 :). |
|
Всего комментариев: 2 | |
| |