You are missing an Extends in Bar

var Bar = new Class({
  Extends: Foo,
  // ...
}

Paul

On 17-Sep-08, at 9:01 PM, keif wrote:



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