Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
Новости
Последние поступления
Книжный магазин
  Hardware:
Видеоустройства
Системные платы
Процессоры
Мобильные устройства
Аудиосистема
Охлаждение системы
Накопители информации
КПК и ноутбуки
Телефоны и связь
Периферия
Система
Сети
Разные устройства
 
  Programming:
Web-разработка
Языки программирования
Технологии и теория
Разработка игр
Программная инженерия
 
  Software:
Операционные системы
Windows 7
Базы данных
Обзоры программ
Графика и дизайн
   
  Life:
Компьютерная жизнь
Разные материалы
   
Партнеры
Публикация
Правовая информация
Реклама на сайте
Обратная связь
Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Классы в MooTools

Раздел: Programming / Ajax @ 15.09.2008 | Ключевые слова: mootools classes ajax framework версия для печати

Автор: magmoro
Источник: habrahabr

Создать свой класс в MooTools очень просто:
//Example 1
var someClass=new Class({

   initialize: function(){
      alert(`Hello, world!`);
   }

});
* This source code was highlighted with Source Code Highlighter.


Всё, класс готов. Теперь можно создавать объекты данного класса:

var classObject=new someClass();* This source code was highlighted with Source Code Highlighter.

Результат — алерт со словами: «Hello, world».
пример 1

initialize — конструктор класса. Вызывается автоматически при создании экземпляра класса. (не вызывается, если первый аргумент при создании объекта класса — $empty)

У класса могут быть методы:

//Example 2
var testClass=new Class({

   initialize: function(element){
      this.element=$(element);
   },
   
   draw: function(){
      this.element.setStyles({
         `background-color`: `red`,
         border: `solid 1px blue`
      });
   },
   
   hide: function(){
      this.element.setStyle(`display`, `none`);
   },
   
   show: function(){
      this.element.setStyle(`display`, `block`);
   },
   
   toggle: function(){
      this.element.style.display == `none`? this.show(): this.hide();
   }

});
* This source code was highlighted with Source Code Highlighter.


Здесь четыре метода(не включая конструктора) — draw, hide, show и toggle.

draw делает элемент крассным с синей границей

hide скрывает элемент

show показывает элемент

toggle изменяет видимость элемента

Пример использования:
var elMgr= new testClass(`el`);

elMgr.draw();

(function(){
   elMgr.toggle();
}).periodical(1000);
* This source code was highlighted with Source Code Highlighter.


Результат — элемент делается красным, и мигает каждую секунду.
пример 2

Обратите внимание, чтоб вызвать метод show из метода toggle используется this.show(); this — это магическая переменная.


Implements



Магическое свойство Implements добавляет новые методы в класс. Классический пример — добавление метода setOptions.

//Example 3
var exampleClass3=new Class({

   Implements: [Options],

   options: { // опции по умолчанию
      bgColor: `red`,
      borderWidth: 1
   },

   initialize: function(element, options){
      this.setOptions(options);
      this.element=$(element);
   },
   
   draw: function(){
      this.element.setStyles({
         `background-color`: this.options.bgColor,
         `border-style`: `solid`,
         `border-color`: `black`,
         `border-width`: this.options.borderWidth
      });
   }

});
* This source code was highlighted with Source Code Highlighter.


Implements: [Options] означает — добавить все методы класса Options в данный класс. Класс Options имеет только один метод — setOptions.

Если опции не заданы, будут использованы опции по умолчанию (цвет — красный, толщина границы — 1px).

Примеры использования класса:

var elMgr=new exampleClass3(`el`, {
   bgColor: `yellow`
});
* This source code was highlighted with Source Code Highlighter.

пример 3


Implements обычно используется чтоб добавить методы в новый класс. А так добавляются методы в уже созданый класс:

//example 4
someClass=new Class();
         
someClass.implement({

   extraMethod: function(){
      alert(`Я — добавленный метод`);
   }

});

(new someClass).extraMethod();
* This source code was highlighted with Source Code Highlighter.


Результат — алерт: «Я — добавленный метод»
пример 4

Вопрос: «А если я добавлю метод, который уже существует, что произойдет?».
Ответ: «В классе будет только новый метод, про старый можете забыть, его не вернуть.»


Extends



Ещё одно магическое свойство — Extends. С помощью него создаюется новый класс расширяющий существующий. Пример:

Расширим класс из первого примера (Hello, world):

//example 5
var extendedSomeClass=new Class({

   Extends: someClass,
   
   initialize: function(){
      this.parent();//вызываем метод initialize базового класса
      alert(`extended Hello, world!`);
   }

});

new extendedSomeClass();
* This source code was highlighted with Source Code Highlighter.


Результат — алерт «Hello, world!» из метода initialize базового класса и алерт «extended Hello, world!»
пример 5

Вопрос: «А есть ещё какие-нибудь магические методы, кроме Implements и Extends?»
Ответ: «Нет, но можно добавить в Class.Mutators, пример — Binds Mutator»


Class.Extras



В MooTools есть несколько классов, которые очень часто используются. Это классы Options, Events и Chain. Пример c Options уже был. А вот с Events:

//example 6
var exampleClass6=new Class({

   Implements: [Options, Events],

   options: { // опции по умолчанию
      bgColor: `red`,
      borderWidth: 1
   },

   initialize: function(element, options){
      this.setOptions(options);
      this.element=$(element);
   },
   
   draw: function(){
      this.element.setStyles({
         `background-color`: this.options.bgColor,
         `border-style`: `solid`,
         `border-color`: `black`,
         `border-width`: this.options.borderWidth
      });
      this.fireEvent(`draw`);//event draw
   }

});

var obj=new exmpleClass6(`el`, {
   bgColor: `#561`,
   borderWidth: 4
});

obj.addEvent(`draw`, function(){
   alert(`draw выполнен`);
});

obj.draw();
* This source code was highlighted with Source Code Highlighter.


addEvent — добавить событие
fireEvent — выполнить событие

В данном примере событие добавлено явно с помощью метода addEvent. Событие можно также добавить, указав его в options с префиксом on и первой прописной:

var obj=new exampleClass6(`el`, {
   bgColor: `#561`,
   borderWidth: 4,
   onDraw: function(){
      alert(`draw выполнен`);
   }
});
* This source code was highlighted with Source Code Highlighter.

пример 6

В options существует магическое свойство — initialize, выполняемое после конструктора класса:

//example7

var someClass=new Class({

   Implements: [Options],
   
   options:{
      initialize: function(){
         alert(`after initialize`);
      }
   },
   
   initialize: function(){
      alert(`initialize`);
   }

});
* This source code was highlighted with Source Code Highlighter.

пример 7



Основы изложены, если есть вопросы — задавайте. Ответы на все вопросы можно найти в документации. И помните, лучшая документация — исходный код.

архив с примерами

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Programming / Ajax


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.