当前位置:   article > 正文

前端 JS 经典:判断数组的准确方法

前端 JS 经典:判断数组的准确方法

前言:判断数组的方法有很多,但是最完美的只有一个。

1. Object.prototype.toString.call

通过 toString.call 方法来判断是否数组。

  1. function isArray(obj) {
  2. return Object.prototype.toString.call(obj) === "[object Array]";
  3. }

缺点:ES6 提供了一个知名符号[Symbol.toStringTag],可以指定 toString.call 的调用行文,再用这种方法就不准确了。

  1. const obj = {
  2. [Symbol.toStringTag]: "abc",
  3. };
  4. Object.prototype.toString.call(obj); // [object abc]

2. instanceof

通过 instanceof 判断原型链

  1. function isArray(obj) {
  2. return obj instanceof Array;
  3. }

缺点:可以通过 Object.setPrototypeOf 改变原型链的指向。

  1. let obj = {};
  2. Object.setPrototypeOf(obj, Array.prototype);
  3. isArray({});

3. Array.isArray

ES6 提供的最完美的判断数组方法,底层是 C++代码。无法随意篡改。

  1. function isArray(obj) {
  2. return Array.isArray(obj);
  3. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/686136
推荐阅读
相关标签
  

闽ICP备14008679号