ExtJS 3.1 で Ext.applyIf の動作が変わっています
ExtJS の Ext.applyIf の動作が、3.0 と 3.1 とで変わっています。
ソースコードを見ると一目了然です。
3.0
applyIf : function(o, c){ if(o){ for(var p in c){ if(Ext.isEmpty(o[p])){ <-- ここが変わっている o[p] = c[p]; } } } return o; },
3.1
applyIf : function(o, c){ if(o){ for(var p in c){ if(!Ext.isDefined(o[p])){ <-- ここが変わっている o[p] = c[p]; } } } return o; },
プロパティ値を上書きする判定条件が、isEmpty から isDefined に変わっています。
つまり 3.0 では nullや空文字列 の場合に上書きされていましたが、3.1 では上書きされません。
Ext.applyIf は クラスの継承の際によくつかわれる関数ですので、注意が必要です。
http://www.extjs.com/products/extjs/CHANGES_ext-3.1.0.htmlにも載っていない気が...