1. 首页
  2. 编程语言
  3. Javascript
  4. 基于JS判断对象是否是数组

基于JS判断对象是否是数组

上传者: 2021-12-12 13:21:21上传 PDF文件 71.17 KB 热度 25次

在上方代码中,instanceof运算符检测Array.prototype属性是否存在于变量a的原型链上,显然a是一个数组,拥有Array.prototype属性,所以为true。需要注意的是,prototype属性是可以修改的,所以并不是最初判断为true就一定永远为真。其次,当我们的脚本拥有多个全局环境,例如html中拥有多个iframe对象,instanceof的验证结果可能不会符合预期,例如:导致这种问题是因为iframe会产生新的全局环境,它也会拥有自己的Array.prototype属性,让不同环境下的属性相同很明显是不安全的做法,所以Array.prototype !== window.frames[0].Array.prototype,想要arr instanceof Array为true,你得保证arr是由原始Array构造函数创建时才可行。我们知道,实例的构造函数属性constructor指向构造函数,那么通过constructor属性也可以判断是否为一个数组。同样,这种判断也会存在多个全局环境的问题,导致的问题与instanceof相同。

下载地址
用户评论