js基础-12-判断数组和判断对象的⽅法
⼀,判断数组的⽅法
⾸先需要明确的是typeof在判断[],{},null时返回的都是 object,所以是⽆法判断数组和对象的。
1,常⽤的⽅法是:instanceof
表达式:A instanceof B
返回值:如果B函数的显⽰原型对象(prototype)在A对象的原型链(__proto__)上,返回true,否则false
var arr=[1,2,3]
var b={}
console.log(arr instanceof Array)//true
console.log(b instanceof Object)//true
console.log(arr instanceof Object)//true  因为arr的原型链必然包含Object的原型对象,或者说所有对象都是Object的实例
//于是⼜可以引申出另⼀种写法:
console.log(arr.__proto__.constructor === Array )
console.log(arr.__proto__=== Array.prototype )
所以说,它可以⽤来判断是不是数组,⽽判断不了是不是对象。
但是如果存在多个全局执⾏环境,就会存在多个不同版本的Array构造函数了,这种办法就会失效,使⽤下⼀种:2,Array.isArray(arr)
不管arr是在哪个全局环境定义的,⼀旦是数组则返回true,否则false.
Array.isArray([])// true
javascript全局数组Array.isArray({})// false
3,constructor
var arr=[]
console.structor==Array)//true
4,toString
var arr=[]
console.log(String.call(arr)==='[object Array]')//true
⼆,判断是否对象的⽅法
1、toString(推荐)
String.call(obj)==='[object Object]'
//Object原型对象上的toString⽅法是可以判断类型的。利⽤call把指针指向obj,也就是调⽤这个toString⽅法来判断obj
2、constructor

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。