Extend and members

When a member is redefined in a subclass it is _replaced_, not merged. This can lead to (arguably) unexpected results when redefining members that are objects, Arrays, etc.

by Walter Rumsby

HTML

<ul id="output"></ul>

JavaScript

Ext.define('My.Base', {
    extend: 'Ext.Component',
    foo: {
        a: 1,
        b: 2,
        c: 3
    },
    bah: 'Gerard'
});

Ext.define('My.Sub', {
    extend: 'My.Base',
    foo: {
        d: 4,
        e: 5
    },
    bah: 'Prince'
});

var sub = Ext.create('My.Sub'),
    el = document.getElementById('output');

Object.keys(sub.foo).forEach(function (k) {
    var html = Ext.String.format('<li>{0}: {1}</li>', k, sub.foo[k]);
    
    el.innerHTML += html;
});

el.innerHTML += Ext.String.format('<li>{0}</li>', sub.bah);