I've got a few articles that might help:

http://ryanflorence.com/mootools-class/
http://ryanflorence.com/mootools-for-beginners-part-6-coding-an-animated-menu-with-class/
http://ryanflorence.com/mootools-for-beginners-part-7-creating-flexible-classes-using-options-events-and-event-management/

On Feb 23, 2011, at 12:21 PM, אריה גלזר wrote:

> and to add another clarification as to why bind is needed here:
> foo = {
>    func : function(){console.log(this)}
> }
> 
> foo.func(); //foo
> 
> setTimeout(foo.func,10); //window
> 
> why? because once we pass a reference of a function  to another function, 
> that reference will always be independent of any object it might of resided 
> in. This is the same with addEvent. So when we want to make sure a function 
> still reference a parent object when we pass it, we use bind:
> 
> setTimeout(foo.func.bind(foo),10);//foo
> 
> The best place for you to read about 'this' is here:
> http://dmitrysoshnikov.com/ecmascript/chapter-3-this/
> 
> it's quite long, but very thorough. I can't think of any better place that 
> you can learn about js mechanics than this blog (while you're at it - that 
> entire series is a must - look at the menu for more articles)
> 
> On Wed, Feb 23, 2011 at 8:15 PM, Aaron Newton <[email protected]> wrote:
> One last bit here on terminology. "this" has nothing to do with scope. This 
> is scope:
> 
> var foo = function(){
>   var bar = 0;
> };
> //bar is not available here because it is not in scope
> 
> "this" is actually pretty easily defined: "this" is the object to which the 
> current function belongs. Its how objects with methods can refer to 
> themselves (how else could they?). When a function is defined on its own, its 
> owner is the window:
> 
> (function(){ console.log(this) })();
> //logs the window
> 
> Even if that function is inside another function or method this is the case:
> 
> var foo = {
>   bar: function(){
>     console.log(this); //logs foo
>     (function(){ console.log(this) })(); //logs window
>   }
> };
> 
> We bind things so that we can use functions as arguments within an instance 
> and still reference that instance:
> 
> var foo = {
>   bar: function(){
>     (function(){ console.log(this) }).apply(this); //logs foo
>   }
> };
> 
> On Wed, Feb 23, 2011 at 9:04 AM, Sean McArthur <[email protected]> wrote:
> It looks you were trying to pass scope to addEvent using a third argument, 
> but it does not work that way. As Piotr showed, you need to bind the function.
> 
> 
> 
> On Wed, Feb 23, 2011 at 8:41 AM, Piotr Zalewa <[email protected]> wrote:
> http://jsfiddle.net/zalun/GwxvG/2/
> 
> bind changes the scope, so this refers to the object and not to clicked
> element.
> If you're confused about what is "this" in a function simply
> console.log(this) as a first thing in this function will give you a hint.
> 
> zalun
> 
> On 02/23/11 16:29, roark wrote:
> > Hi Everyone.
> >
> > I've had a good read through the article Aaron wrote at 
> > http://jqueryvsmootools.com
> > and I'm really battling to understand scope or when to use "this" in
> > my classes etc.
> >
> > I'm writing a class that will display a help context when you focus on
> > a filed in a form.
> > http://jsfiddle.net/roark/GwxvG/1/
> >
> > When I click on a filed, i get "this.function_name" is not defined.
> > Trying to search google for the term 'mootools "this" ' is not very
> > successful as you can image so i was hoping soemone could have a look
> > and let me know where I'm going wrong?
> >
> > Thanks
> > Roark
> 
> 
> --
> blog  http://piotr.zalewa.info
> jobs  http://webdev.zalewa.info
> twit  http://twitter.com/zalun
> face  http://facebook.com/zaloon
> 
> 
> 
> 
> 
> -- 
> Arieh Glazer
> אריה גלזר
> 052-5348-561
> http://www.arieh.co.il
> http://www.link-wd.co.il
> 

Reply via email to