Ext Objects inheritance

by Johan Vandeplas

JavaScript

Ext.onReady(function () {
    Ext.define('Animal', {
        name: 'noName',
        legs: 4,
        age: 0,
        showYourLegs: function () {
            console.log('I have ' + this.legs + ' legs');
        }
    });

    Ext.override(Animal, {
        showYourLegs: function () {
            console.log('I am ' + this.name + ' an I have ' + this.legs + ' legs.');
        },
        showYourName: function () {
            console.log('I am ' + this.name);
        }
    });


    Ext.define('Dog', {
        extend: 'Animal',
		
        name: 'someName',
        legs: 4,
        age: 0,
        
        bark: function () {
            console.log('I Say BARK!');
        }
    });

    Ext.define('Duck', {
        extend: 'Animal',

        constructor: function(config){
            var me = this;
            Ext.apply(me, config);
            me.callParent(arguments);
        },
        
		name: 'noName',        
        legs: 2,
        age: 0,
        
        kwak: function () {
            console.log('I Say KWAK!');
        }
    });

    var dog = Ext.create('Dog', {
        name: 'Jack',
        age: 5
    });

    var duck = Ext.create('Duck', {
        name: 'Donnald',
        age: 3
    });


    dog.showYourLegs();
    dog.showYourName();
    dog.bark();

    duck.showYourLegs();
    duck.showYourName();
    duck.kwak();
});