Fold All / Expand All

2016年12月17日 星期六

判斷 isArray 造成的問題!?

前情提要
嘗試讓 Ext JS 和 React 打包共存,但打架無止盡,連 isArray 都有問題!?
Array.isArray() 在 IE 9 開始支援
所以在 IE 9 之前怎麼辦呢?
Ext JS 3 是
Ext.isArray = function(v) {
    return toString.apply(v) === '[object Array]';
}
Ext JS 6 則是
Ext.isArray = ('isArray' in Array) ? Array.isArray : function(value) {
    return toString.call(value) === '[object Array]';
core-js 這邊
isArray = Array.isArray || function isArray(arg){
    return cof(arg) == 'Array';
};

cof = function(it){
    return toString.call(it).slice(8, -1);
};
如果有吃到 Array.isArray 其實沒什麼問題
但是在 Ext JS 3 只會用 toString 去看是 [object Array],然後很神奇地不知道為什麼,掛了整個 bundle 起來,用 toString.apply([1]) 會拿到[object Array Iterator]

沒有留言: