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是很难的。


猜你喜欢

转载自blog.csdn.net/esir82/article/details/80005266