Well, if it did that, it would be working.

Unfortunately, when I say:
var Foo = new Class({
    Implements: Options,
    options: {
       fruits: {
         apple: 'red',
         orange: 'orange'
       },
       favoriteNumber: 10
    },
    initialize: function(options){
        this.setOptions(options);
    }
});

var Bar = new Class({
    options: {
        fruits: {
            apple: 'green',
            lemon: 'yellow'
        },
        favoriteNumber: 12,
        favoriteColor: 'blue'
    },
    initialize: function(options){
        this.parent(options); //sets options
        console.log(this.options.fruits.apple); //logs 'green'
        console.log(this.options.fruits.orange); //logs null
    }
});



anutron wrote:
> 
> When you extend a class, the options are blended together. Any options
> that overlap will be overwritten:
> 
> var Foo = new Class({
>     Implements: Options,
>     options: {
>        fruits: {
>          apple: 'red',
>          orange: 'orange'
>        },
>        favoriteNumber: 10
>     },
>     initialize: function(options){
>         this.setOptions(options);
>     }
> });
> 
> var Bar = new Class({
>     options: {
>         fruits: {
>             apple: 'green',
>             lemon: 'yellow'
>         },
>         favoriteNumber: 12,
>         favoriteColor: 'blue'
>     },
>     initialize: function(opitions){
>         this.parent(options); //sets options
>         console.log(this.options.fruits.apple); //logs 'green'
>         console.log(this.options.favoriteNumber); //logs 12
>         console.log(this.options.favoriteColor); //logs 'blue'
>     }
> });
> 
> 
> keif wrote:
>> 
>> So the extended class options override the original class options.
>> 
>> I have to pass the class options into the first class, then into the
>> second class as well - I have a feeling this isn't by design, so odds are
>> I'm doing something wrong when I do this.parent();
>> 
>> 
>> keif wrote:
>>> 
>>> I'm extending noobslide:
>>> http://www.efectorelativo.net/laboratory/noobSlide/
>>> 
>>> but when I extend the class, it overwrites the original options.
>>> 
>>> var mooSlideResource = new Class({
>>>     Extends: mooSlide,
>>> 
>>>     options: {
>>>             'captionsContainer': null,
>>>             'description': false,
>>>             'hoverButtons': null,
>>>             'hoverActionsFx': {
>>>                     'duration': 250,
>>>                     'transition': Fx.Transitions.linear
>>>             },
>>>             'hoverOffset': 25
>>>     },
>>> 
>>>     initialize: function(options){
>>>             console.debug('resource slide', options);
>>> 
>>>             // Include parent options
>>>                 this.parent(options);
>>>       }
>>> 
>>> It then overwrites the original options I dump with a
>>> console.debug(options);
>>> 
>>> Anyone have any insight to this?
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/Extending-a-class.-tp1095871p1097025.html
Sent from the MooTools Users mailing list archive at Nabble.com.

Reply via email to