Hi Barry!

Thank you very much! Very informative.

On 3 December 2010 14:31, Barry van Oudtshoorn <[email protected]> wrote:
> Hi Maxim,
>
> 1. The element will actually be shared by *all* the instances of that class.
> Take a look at http://jsfiddle.net/948G8/ -- you'll notice that the element
> which is injected into the document has the text 'beta'. What you probably
> want to do is something like this:
>
> var FooComponent = new Class({
> elem: null,
> initialize: function() {
> this.elem = new Element('div');
> }
> })
>
> This will mean that every time you instantiate your class, you get a
> brand-spanking-new element for that instance. (The initialize method is
> special -- MooTools automatically calls it for you every time you
> instantiate a class.)
>
> 2. Well, in your example, you're actually calling the function
> getCurrentStatus when you're setting up the class. Take a look at
> http://jsfiddle.net/t6jk9/ -- you'll see that f1 is called, but f2 isn't.
> Now, in a class, when you call a function, "this" can refer to a couple of
> things. Take a look at http://jsfiddle.net/5ncg3/0/ -- you'll see that when
> you call the function "checkThisOut", "this" is dependent on how you're
> making that call. This is where bind() becomes useful. Take a look at
> http://jsfiddle.net/5ncg3/1/ -- you'll see that in the console, when we call
> "otherChecker.checkOtherOut", "this" now refers to our original ThisChecker
> instance.
>
> 3. The parentheses allow you to execute the function immediately, without
> bothering to assign it to a variable or make it a member of an object. Try
> executing
> (function() { console.log('a'); })();
> in your console, and then try
> function() { console.log('b') }();
> -- the second one will throw an error. There are loads of places that
> running a function as soon as it's declared is useful, as you've noticed in
> the MooTools source!
>
> Hope this helped a bit!
>
> - Barry
> www.barryvan.com.au
>
> On 3/12/2010 8:10 PM, Maxim Lacrima wrote:
>>
>> Hi!
>>
>> I'm quite new to javascript and MooTools.
>> I have a class that looks like following:
>>
>> var FooComponent = new Class({
>>     elem: new Element('div'),
>>     status: this.getCurrentStatus()
>> });
>>
>> Two questions:
>> 1) When I access elem property as FooComponent.elem, will Element be
>> instantiated only once (when I access it for the first time) or is it
>> instantiated each time I access elem property?
>> 2) When I access status property, which object does 'this' belongs to?
>>
>> And one more general javascript question. What does a function wrapped
>> in parentheses mean in javascript? This can be often found in MooTools
>> source code:
>> (function(){
>>     // function body
>> })();
>>
>> Thanks in advance.
>> Sorry for my English.
>>
>
>
> --
> Not sent from my Apple πPhone
>
>



-- 
with regards,
Maxim

Reply via email to