MooTools 1.2 Class Template

Written by David Walsh on Monday, July 21, 2008


This article may feature code that is no longer best practice in MooTools.
Click here to learn what has changed to make your code framework-compatible.

Starting a MooTools class can be difficult if you haven’t created one before. Here’s a template you can copy, paste, and use to create your MooTools classes.

MooTools 1.2 Class Template

var yourClass = new Class({
	
	//implements
	Implements: [Options],

	//options
	options: {
		yourOption: ''
	},
	
	//initialization
	initialize: function(options) {
		//set options
		this.setOptions(options);
	},
	
	//a method that does whatever you want
	yourMethod: function() {
		
	}
	
});

MooTools 1.2 Class Usage Template

	//once the DOM is ready
	window.addEvent('domready', function() {
		var yourInstance = new yourClass({
			yourOption: 'yourValue'
		});
	}

Follow via RSS Epic Discussion

Commenter Avatar July 21 / #
evilhuman says:

Great reference point, thanks!

Commenter Avatar July 21 / #
Seth says:

This is something I’ve been curious about for a while with MooTools. What would you use a class for? What determines whether you use a Class or just a function?

I’m really trying to learn best practices for coding with MooTools and other libraries but I haven’t really found an all encompassing resource…all though this site is quickly becoming a favorite.

Commenter Avatar July 21 / #
keif says:

I’ve been doing the same thing!

@Seth, the best explanation I’ve heard is that classes help make your code more readable, reusable, and less complex. That’s the short answer ;)

David Walsh July 21 / #
david says:

@Seth: I use classes when I’m creating functionality with options. I also use classes so I can reference objects. It does keep the code cleaner too!

Commenter Avatar July 21 / #
rborn says:

I use classes when I want to reuse the code with other occasions – in same project, or other – with different options
I use functions when I do more specific tasks, or more simple that a class would be just overhead…

Commenter Avatar July 21 / #
Daniel says:

An extra nice post, David. Thanks! (It’s Stumble time!)

Commenter Avatar July 22 / #
Imzyos says:

Very nice snippet

Commenter Avatar July 23 / #
Imzyos says:

What about add Extends?

David Walsh July 23 / #
david says:

@Imzyos: I don’t extend other classes much.

Commenter Avatar August 11 / #
Crispijn says:

Hi David,

I’m struggling with my first mootools (1.2) class now and I have a question about the options. How do I use them in my class?

For example:

$(e).addEvent(‘mouseenter’, function(){
e.fade(this.options.minopacity());
});

This gives an error: this.options is undefined.

But when I initialize I also set the options with

initialize: function(options){
this.setOptions(options),
this.start(),
console.log(‘Buttons ready to hover…’);
},

Maybe you’ve got the answer for me…

Thanks a lot and keep up the good (mootools) work!

David Walsh August 11 / #
david says:

@Crispjin: Instead of e.addEvent(‘mouseenter’,function() { });, you may want to consider adding a “mouseenter” event to the class and replace the above with “this.fireEvent(‘mouseenter’);”.

Commenter Avatar August 12 / #
Crispijn says:

I’m not very familiar with the JavaScript/moo syntax so I’m still struggling with your suggestion with the this.fireEvent

How do I implement this? Where to I leave the “e” variable witch points to the element I would like to change the opacity? The mootools docs couldn’t give me a right example…

var fadeButtons = new Class({

Implements: [Options],

options: {
maxopacity: 1,
minopacity: 0
},

initialize: function(options){
this.setOptions(options),
this.start()
},

//start the button events
start: function(){

var list = $$(‘#buttons div img’);

list.each(function(e) {

this.e.fireEvent(‘mouseenter’);

//OLD HABBITS
/*e.addEvent(‘mouseenter’, function(){
e.fade(this.options.minopacity);
});

e.addEvent(‘mouseleave’, function(){
e.fade(this.options.maxopacity);
});*/
});

},
});

Could you give me a kick in the right direction? Thanks anyway!

Crispijn,
The Netherlands

Commenter Avatar May 10 / #
Keijo says:

Thanks for this. For some reason I’ve been using it quite a lot. Simple things are usually best!

One thing I noticed is that Dom Ready is missing ); at the end. So you could add that so it does not confuse newcomers with errors if they use this.

Commenter Avatar January 07 / #
Samuel M. says:

I have been using mootools for a little bit, and I really like it.

Thanks for the tutorials, they’re great… Keep them coming.

Samuel M.

Be Heard!

I want to hear what you have to say! Share your comments and questions below.

Name*:
Email*:
Website:  


© David Walsh 2007-2010. Contact David Walsh. Powered by the remarkable MooTools javascript framework.