JavaScript數組的isArray方法實現

ES6中添加了Array.isArray方法用來判斷一個參數是不是數組。

這個方法如果要我自己來實現,就會是這樣:

function isArray(arr) {
    var toString = Object.prototype.toString;
    var sign = "[object Array]";
    return toString.call(arr) === sign;
};

事實上,MDN上面的polyfill就是這樣寫的。

這段代碼很穩妥,在ES5及以前的版本中,幾乎沒問題。

然而,如果是在支持ES6的環境中,有一種trick可以騙過它的檢測。

var obj = {};
// ES6 Symbol
obj[Symbol.toStringTag] = 'Array';
// true
console.log(isArray(obj)); 

我感覺要實現一個NiceArray.isArray是很難的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章