源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JS判断数组那点事

  • 时间:2020-02-06 04:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JS判断数组那点事
面试题中有个这样题目 如何判断数组 大家都知道哪些方法 其实有时候 明明知道哪些方法 但在关键时候就是说不上来 [b]typeof运算符[/b] typeof会返回这个类型的字符串
 var a = '123'
 console.log(typeof(a)) //string
 var b = []
 console.log(typeof(b)) //object
 var c = {}
 console.log(typeof(c)) //object
 var d = null
 console.log(typeof(d)) //object
上述看到 数组 对象 null 用typeof返回都是object 这种方法不能识别出是否为数组 [b]原型contructor链方法[/b] 实例化有一个contructor属性 这个属性指向生成对象 数组的方法
 var a = []
 console.log(a.__proto__.constructor) //ƒ Array() { [native code] }
 var b = {}
 console.log(b.__proto__.constructor) //ƒ Object() { [native code] }
上述看到 数组是由Array函数实例化的 对象由Object函数实例化来得 感觉这种方法是可以了 但是 constructor这个属性是可以被改写的
  var a = []
  a.__proto__.constructor = Object
  console.log(a.__proto__.constructor) //ƒ Object() { [native code] }
可以看到 这个是 变成了数组判断成了对象 所以这个方法也不是最好的 [b]instanceof[/b] 这个方法是判断某个构造函数的prototype属性所指向的对象是否在另外一个要检测对象的原型链上
  var a = []
  console.log(a instanceof Array) //a对象的原型链上能找到Array true
  console.log(a instanceof Object) //true 原型链上也能找到对象
上述这种也不是特别好 判断不出是数组还是对象 [b]通用的方法 toString[/b] toString() 方法返回放映这个对象的字符串
  var a= '123'
  console.log(a.toString()) //123
  var b = [1,2,3]
  console.log(b.toSting()) //1,2,3
  var c = {}
  console.log(c.toString)) //[object Object]
可以看到只有对象返回对象类型 返回[object type] type代表对象的类型 判断对象用Object的toString的方法拿过来用
 var a =[]
 Object.prototype.toString.call(a) //[object Array]
这个对象 toString方法是可以判断出是否为数组 但是这里注意下有个情况就是对象原型上toString() 也是可以更改的
Array.isArray(XX)
个人感觉还是使用通用方法 toString() 方法靠谱 [b]总结[/b] 以上所述是小编给大家介绍的JS判断数组那点事,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程素材网网站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部