您当前的位置: 首页 > 

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

检测一个对象是不是数组

发布时间:2021-04-11 01:19:19 ,浏览量:0

目录
  • 1、基本数据类型
  • 2、引用数据类型
  • 3、typeof()或者typeof,因为typeof有局限性,所以不能用来做数组类型的检测
  • 4、proto
  • 5、Object.getPrototypeOf([value])
  • 6、Array.prototype.isPrototypeOf([value])
  • 7、使用构造函数constructor进行检测,即使用父级原型对象中的constructor属性
  • 8、[value] instanceof Array
  • 9、万能方法,不存在兼容性:[value].prototype.toString().call()
  • 10、isArray():ES5新增,存在兼容性问题。
    • 11、以上方法需要了解面向对象、原型prototype和原型链。
1、基本数据类型
var number = 100; var string = 'asdfghjkl'; var boolean = true; var nu = null; var un = undefined; 
2、引用数据类型
var fun = function() {}; var object = {}; var array = [3, 6, 9]; var date = new Date(); 
3、typeof()或者typeof,因为typeof有局限性,所以不能用来做数组类型的检测
// typeof()的局限性 console.log(typeof(number)); // number console.log(typeof string); // string console.log(typeof(boolean)); // boolean // 因为null的意思是指向一个空地址 // 所以更像一个没有意义的空对象 console.log(typeof(nu)); // object console.log(typeof un); // undefined // typeof可以检测函数 console.log(typeof(fun)); // function // typeof不能检测对象的具体类型 // 把除了Function对象以外的引用类型对象都检测为object console.log(typeof object); // object console.log(typeof array); // object console.log(typeof(date)); // object 
4、proto
console.log(object.__proto__ == Array.prototype); // false console.log(array.__proto__ == Array.prototype); // true console.log(date.__proto__ == Array.prototype); // false 
5、Object.getPrototypeOf([value])
// __proto__可能被浏览器禁用,所以有等效的函数检测。 console.log(Object.getPrototypeOf(object) == Array.prototype); // false console.log(Object.getPrototypeOf(array) == Array.prototype); // true console.log(Object.getPrototypeOf(date) == Array.prototype); // false 
6、Array.prototype.isPrototypeOf([value])
console.log(Array.prototype.isPrototypeOf(object)); // false console.log(Array.prototype.isPrototypeOf(array)); // true console.log(Array.prototype.isPrototypeOf(date)); // false 
7、使用构造函数constructor进行检测,即使用父级原型对象中的constructor属性
console.log(object.constructor == Array); // false console.log(array.constructor == Array); // true console.log(date.constructor == Array); // false 
8、[value] instanceof Array
console.log(object instanceof Array); // false console.log(array instanceof Array); // true console.log(date instanceof Array); // false 
9、万能方法,不存在兼容性:[value].prototype.toString().call()
console.log(Object.prototype.toString.call(object)); // [object Object] console.log(Object.prototype.toString.call(array)); // [object Array] console.log(Object.prototype.toString.call(date)); // [object Date] 
10、isArray():ES5新增,存在兼容性问题。
console.log(Array.isArray(object)); // => false console.log(Array.isArray(array)); // => true console.log(Array.isArray(date)); // => false 
11、以上方法需要了解面向对象、原型prototype和原型链。

在这里插入图片描述

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3781s