JS检测数组类型的方法小结
1.instanceof
当只有一个全局执行环境时适用,如果包含多个框架,就存在两个以上不同版本的Array构造函数,如果从一个框架向另一个框架传递数组,传入的数组与在第二个框架中原生创建的数组分别具有不同的构造函数,即为不同类型
if (value instanceof Array) { //对数组执行某项操作 }
2. Array.isArray() 方法
因为是ES5新增的,只支持IE9+、Firefox 4+、Safari 5+、Opera 10.5+和Chrome
if (Array.isArray(value)) { //对数组执行某些操作 }
3.Object.prototype.toString.call()方法
适用于所有环境,只支持原生的对象,Object的toString()方法不能检测非原生构造函数的构造函数名。开发人员自定义的任何构造函数都将返回[object Object]
原理在任何值上直接调用Object的原生toString()方法,都会返回[object NativeConstrctorName]格式的字符串,每个类内部都有一个class属性,这个属性中就指定了上述字符串中构造函数名。
var value = [] console.log(Object.prototype.toString.call(value))//"[Object Array]"
由于原生数组的构造函数名和作用域无关,使用toString()方法就能保证输出一样的值。
为什么不使用对象自己的toString() 方法?
var value = [] console.log(value.toString())//" " value = ['pp','oo'] console.log(value.toString())//"pp,oo" value = ['pp',"oo"] console.log(Object.prototype.toString.call(value))//[object Array]
Array的tostring()方法被重写了(很多原生对象均如此),所以它会调用自己构造函数上的toString()方法,返回其他的字符串
还可以用此方法来判断是不是原生函数或者正则表达式
function isFunction(value){ return Object.prototype.toString.call(value) === “[object Function]” }//不适用于IE中以COM对象实现的任何函数 function isRegExp(value){ return Object.prototype.toString.call(value) === “[object RegExp]” }
以上所述是长沙网络推广给大家介绍的JS检测数组类型的方法小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程