Thank Arieh Glazer, You always in the maillist help we mootools user. Thank
you....

If you find the link
http://groups.google.com/group/mootools-users/browse_thread/thread/60c355aa83a0107c?pli=1you
just post, you will found the question jsut asked by me.

I like to know how, and I never satisfied with knowing how to use mootools.
So, my questions always about Mootools' core and why Mootools code just like
that. Sometimes, those questions are hard to answer, but, I think, if I want
to a andvance Js developer, I need to know it.

Above all, thank you so much.....

Code just like a poem, and Mootools is a poem in javascript.




2010/12/12 אריה גלזר <[email protected]>

> Well, I wasn't sure about whether this was a question or not, but some
> points:
>
>    1. IMO there are a lot of places where the real magic happens,
>    especially in the entire code you supplied in point 1. What Class does is 
> to
>    supply a factory for an object. The function, when called with new, checks
>    if the it has an initialize method and calls it. This is the first thing
>    that makes Class important - it allows you to specify a constructor that 
> can
>    be inherited/modified.
>    2. The second important part is that extend basically adds the Class
>    function to the newClass prototype chain.
>    3. Then, the function is passed implement on the object that you
>    specified. The overloadSetter is a private mootools method, but it was
>    explained in this tread:
>    
> http://groups.google.com/group/mootools-users/browse_thread/thread/60c355aa83a0107c?pli=1
>    4. The important thing is that the function loops through the passed
>    object. If any of the keys match one of Class's mutators, it passes the
>    key's value it, to work it's way on the new instance (newClass).
>
>
>
> On Sun, Dec 12, 2010 at 4:10 AM, HENG <[email protected]> wrote:
>
>> Hi Guys:
>>
>> We all love the ways that created Mootools' Class, that anyone know it how
>> to work? If you do not, I have some tips about that. And more, I can not
>> understand all about Mootools' Class. If I have wrong tips, I am happy that
>> you point it out. Thank you....
>>
>> 1. First of all, we know, Mootools' Class is a Function's Instance, you
>> can get the source code at:
>>
>>
>>    1. var Class = this.Class = new Type('Class', function(params){
>>    2.     if (instanceOf(params, Function)) params = {initialize:
>>    params};
>>    3.     var newClass = function(){
>>    4.         reset(this);
>>    5.         if (newClass.$prototyping) return this;
>>    6.         this.$caller = null;
>>    7.         var value = (this.initialize) ? this.initialize.apply(this,
>>    arguments) : this;
>>    8.         this.$caller = this.caller = null;
>>    9.         return value;
>>    10.     }.extend(this).implement(params);
>>    11.     newClass.$constructor = Class;
>>    12.     newClass.prototype.$constructor = newClass;
>>    13.     newClass.prototype.parent = parent;
>>    14.     return newClass;
>>    15. });
>>
>> Because we create Class like that: var Mootools_Class = new Class({}),
>> you can get Function' s Instance.
>>
>>
>> 2. All Mootools' Class' Secret are at .extend(this).implement(params);This 
>> code is beyond my mind to analysis it how to work.....
>>
>> 3.  At Mootools 1.3 stable, we know that Function.prototype.extend() ,
>> OK, now, var newClass().extend(this) ; It will make newClass has the same
>> prototype as Class type,
>>
>> 4. Now, magic happends, the source has Class.implement('implement',
>> implement.overloadSetter()); ,And this method just defined by Class.js,
>> code is as follow:
>>
>>
>>    1. var implement = function(key, value, retain){
>>    2.     if (Class.Mutators.hasOwnProperty(key)){
>>    3.         value = Class.Mutators[key].call(this, value);
>>    4.         if (value == null) return this;
>>    5.     }
>>    6.     if (typeOf(value) == 'function'){
>>    7.         if (value.$hidden) return this;
>>    8.         this.prototype[key] = (retain) ? value : wrap(this, key,
>>    value);
>>    9.     } else {
>>    10.         Object.merge(this.prototype, key, value);
>>    11.     }
>>    12.     return this;
>>    13. };
>>
>> 5. Now, .extend(this).implement(params); , Method  .implement(params); means
>> that, it will run the implements function above, and pass our defined
>> params to implements function.
>>
>> 6. The key statement in implement Function above are:
>>
>>     value = Class.Mutators[key].call(this, value);
>>
>>     this.prototype[key] = (retain) ? value : wrap(this, key, value);
>>
>> The Former means that, it will handler the Class.Mutators, in Mootools,
>> they are Extends and Implements.
>>
>> The latter means that, when pass key word just like parent (this is the
>> reason why we can use this.parent() ), it will make a reference to
>> parent's prototype....
>>
>> 7. Ok, I just understand just now, and go on, I am very confuse about how
>> Mootools' Class work....
>>
>> 8. Questions:
>>
>> 8.1. That anyone can give me a list about Mootools Class prototype, just
>> like: $caller, $owner, $current, $prototyping, $constructor, $name,
>> $origin, $hidden, parent, what are they standing for? and what are the
>> meaning of those words in mootools?
>>
>> 8.2. Who can give me a list that how a Mootools' class Extends from a
>> Parent class ? I can not catch it clearly, even I done it in Firebug again
>> and again.
>>
>> 8.3. Mootools' class is hard to get is its Prototype clearly. That anyone
>> know it clearly, send me some tips, and I really thank you...
>>
>> 8.4. We know, Mootools now is 1.3 version, That anyone know where to get
>> the old version before 1.3. for example, Mootools 1.1, Mootools 1.0, and
>> Mootools 0.9.... Thank you....
>>
>>
>>
>> Reference:
>>
>> Thank you the guys below, your blog is benifited to me.....
>>
>> [1]:
>> http://keetology.com/blog/2009/07/23/up-the-moo-herd-iii-its-classy-not-classic
>> [2]:
>> http://keetology.com/blog/2009/10/27/up-the-moo-herd-iv-theres-a-class-for-this
>> [3]:
>> http://keetology.com/blog/2009/07/20/up-the-herd-ii-native-flora-and-fauna
>>
>>
>> --
>> --------------------------------------------------------------------
>> HengZhou
>>
>> Web Frontend Engineer.....Baidu.......
>> ---------------------------------------------------------------------
>> --
>>
>>
>
>
> --
> Arieh Glazer
> אריה גלזר
> 052-5348-561
> http://www.arieh.co.il
> http://www.link-wd.co.il
>
>


-- 
--------------------------------------------------------------------
HengZhou

Web Frontend Engineer.....Baidu.......
---------------------------------------------------------------------
--

Reply via email to