may be i'm wrong

if B hasn't its initialize method, it's like you do
var instance = new A({child : A});

If your code is recursive the problem is not with mootools but ONLY with
your code.
quoting a wise: "...It gives you enough rope to hang yourself."

but if you cannot revise the structure of your code you can simply avoid the
recurring with something like this
if (options && typeOf(options.child) == 'class' && options.child!=A)


-Vito-




--
-----------
Tafuni Vito
[email protected]
---------------------------------------------
"Verba volant, scripta manent... data corrupted"


2010/11/19 Aaron Newton <[email protected]>

> You have two options for a solution here:
>
> 1) remove that child before you call setOptions:
>
> if (options.child) {
>   this.child = options.child;
>   delete options.child;
> }
>
> 2) make the child option a function that returns one:
>
> if (this.options.child) this.child = this.options.child();
>
> //usage
> new A({ child: Function.from(B) });
>
>
>
>
> On Fri, Nov 19, 2010 at 9:44 AM, אריה גלזר <[email protected]> wrote:
>
>> if i understand correctly, the real issue is if child requires other
>> parameters.
>> and anyway, a class creating other classes (other than perhaps mootools
>> utilities) is a bad habit.
>> imo, if the class is supplied via options, the supplier should already
>> instantiate the class
>>
>>
>> On Fri, Nov 19, 2010 at 7:21 PM, Alex K <[email protected]> wrote:
>>
>>> I apologize for bringing up a topic that might have been discussed in the
>>> past, but I wonder if anyone has a definite and clear solution to this
>>> problem:
>>>
>>>
>>> var A = new Class({
>>>   Implements : Options,
>>>
>>>   initialize : function(options) {
>>>       this.setOptions(options);
>>>       if (options && typeOf(options.child) == 'class')
>>>           this.child = new options.child(options);
>>>   }
>>> });
>>>
>>> var B = new Class({
>>>       Implements : A,
>>> });
>>>
>>> // "Maximum call stack size exceeded"
>>> var instance = new A({child : B});
>>>
>>>
>>> Also, due to some design considerations, implementing "initialize" in
>>> every subclass is not an option.
>>>
>>> Thanks in advance.
>>> -a
>>>
>>
>>
>>
>> --
>> Arieh Glazer
>> אריה גלזר
>> 052-5348-561
>> 5561
>>
>>
>

Reply via email to