Yeah, my bad. I added it to my second example (the one I tested) but didn't
make a note of it.
Paul Spencer wrote:
>
>
> 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.
>>
>
>
>
-----
The MooTools Tutorial: http://www.mootorial.com www.mootorial.com
CNET Clientside: http://clientside.cnet.com clientside.cnet.com
--
View this message in context:
http://n2.nabble.com/Extending-a-class.-tp1095871p1099212.html
Sent from the MooTools Users mailing list archive at Nabble.com.