您现在的位置是:首页 > 学无止境
js数组类型检测
http://www.cnblogs.com/Aralic/p/4470643.html
判断一个变量类型是不是数组
这里分为四种情况分析:
通过constructor
[].constructor === Array; //true
这种方法比较坑,不推荐,因为c...
判断一个变量类型是不是数组
这里分为四种情况分析:
-
通过constructor
[].constructor === Array; //true
这种方法比较坑,不推荐,因为constructor是可以自己修改的。
-
通过instanceof
[] instanceof Array; //true
犀牛书给出的解释是在页面中含多个窗体或者iframe,那么会产生很多执行环境,一个iframe下的数组不是另一个窗体下构造函数的实例。那么如果出现这种极端条件,instanceof也不推荐使用。
-
通过Array.isArray
在新版浏览器,IE9+都已经实现了原生方法
Array.isArray([1,2]); //true
-
通过toSting
Object.prototype.toString.call([]) === '[object Array]'
在一些博客和犀牛书给出的都是这种方法。因为之前对call语法,toString方法的疑惑,导致我只能死记硬背这句代码。最近在回顾继承有关知识,学到了call方法,这段代码意思是对[]调用Object对象原型下的toString方法,不同于数组原型下的toString的方法,之所以疑惑,因为数组下的toString是把一个数组转成字符串。为了屏蔽掉call方法的干扰。
我做了一个小处理
Array.prototype.toString = Object.prototype.toString; [].toString(); // "[object Array]"
验证出来了call的作用方法,同时也得出Array原型重写了toString方法(原型链关系推出来的)紧接着,去 MDN查阅Object原型的toString方法,看看这究竟是什么鬼?原来这个返回对象类型字符串。同时像时间对象,正则对象,数学对象等等都能返回出来。
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] //Since JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null]
上一篇:浅谈js之事件处理
下一篇:扫描二维码实现一键登录
文章评论
- 登录后评论
点击排行
-
php-fpm安装、配置与优化
转载自:https://www.zybuluo.com/phper/note/89081 1、php中...
-
centos下postgresql的安装与配置
一、安装(以root身份进行)1、检出最新的postgresql的yum配置从ht...
-
Mysql的大小写敏感性
MYSQL在默认的情况下查询是不区分大小写的,例如:CREATE TABLE...
-
关于URL编码
转载自:http://www.ruanyifeng.com/blog/2010/02/url_encoding....
-
header中的Cache-control
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的...