美文网首页
isArray方法浅析

isArray方法浅析

作者: 夜雨声繁 | 来源:发表于2016-08-04 18:14 被阅读0次

今天看到群里有人在讨论Array的isArray方法,学习的同时自己又查了查网上的资料,记录如下:
首先是这个方法的实现原理

Array.isArray = function(value) { 
    return Object.prototype.toString.call(value) === '[object Array]';
}

简单理解就是运用对象原型的toString方法将Array转换为字符串,之后进行比对,下面我们来详细分析下各个部分的组成。Object.prototype.toString代表这个toString方法本来是对象原型上面的,之后call方法将toString方法中的this转换为参数value,这样传进的参数value(实际上对于此方法应该是个数组[])就可以通过原型的方法来转换为字符串,这样说可能不容易理解,我们接着看下面的call方法解析。
文档中描述:调用一个对象的一个方法,以另一个对象替换当前对象。
Call([thisObj[,arg1[, arg2[, [,.argN]]]]])
thisObj可选项。将被用作当前对象的对象。
arg1, arg2, , argN可选项。将被传递方法参数序列。
看下面的例子:

  function a(){ 
    this.showName = function(){ 
      document.write(this.name); 
    }
  }
 function Person(arg){ 
   this.name = arg; 
  }; 
var a = new a(); 
var alex = new Person("alex") 
a.showName.call(alex); 

在这段代码中, 函数a中有名为showName的方法,需要有this.name参数,此时用call方法,传入实例alex.name, 用新对象alex替代this指针。
那么[object Array]是什么呢,它是toString方法返回值中的一种,我们先看下面的例子:

var a={a:1,b:"str"};
console.log(a.toString());

输出的结果是[object Object],a对象的{}相当于new Object(), 定义了一个对象的实例,而toString方法默认返回[object objectname],因此,小写的object是方法返回的值格式中默认的,大写的Object是对象的名字。上面的[object Array]也是同样的道理,只是a对象此时是数组对象。
这样通过返回Object.prototype.toString.call(value) === '[object Array]'的判断结果就可以实现参数value是否为数组了。

相关文章

  • isArray方法浅析

    今天看到群里有人在讨论Array的isArray方法,学习的同时自己又查了查网上的资料,记录如下:首先是这个方法的...

  • 如何用js判断一个对象是不是Array

    1.Array.isArray(obj) 调用数组的isArray方法

  • JS数组操作

    基本方法 isArray() 判断数组isArray() 方法用于判断是否是数组(有兼容性) 语法:Array.i...

  • 前端面试:JS数组操作方法

    基本方法 isArray() 判断数组isArray() 方法用于判断是否是数组(有兼容性) 语法:Array.i...

  • 标准库-Array

    静态方法 Array.isArray()Array.isArray()方法返回一个布尔值, 表示参数是否为数组. ...

  • js判断数组的几种方法

    如果浏览器不支持Array.isArray方法,可使用如下兼容代码实现Array.isArray方法

  • js笔记---Array对象

    1、isArray方法Array.isArray方法用来判断一个值是否为数组。var a = [1,2];type...

  • 判断变量是否为数组的几种方法

    1、isArray 方法 isArray() 方法用于判断一个对象是否为数组。如果对象是数组返回 true,否则返...

  • Each方法源码学习

    each方法原码 isArrayLike方法:(类数组也包含数组) isArray方法: _.keys方法: _....

  • 面向对象04

    Array.isArray()方法 作用:判断某个对象是否是数组语法:Array.isArray(对象),返回值为...

网友评论

      本文标题:isArray方法浅析

      本文链接:https://www.haomeiwen.com/subject/zczcsttx.html