javascript是判断对象是否是数组
JS中的数据类型:
2大类
原始类型:值保存在变量本地的数据类型
5种:Number String Boolean undefined null
Number:8bytes 舍入误差-->四舍五入
String:每个英文字符 1byte
每个汉字字符 2bytes
一旦创建内容不可改变
Boolean: true false
引用类型:值不保存在变量本地的数据类型
js中的变量 vs 数据库
内存中 硬盘上的文件
临时的 持久的
客户端 服务器端只存一份
一般用typeof判断数据类型:如下>注意最后一个
console.log(typeof("Hello")); //string
console.log(typeof(123)); //number
console.log(typeof({a:1})); //object
console.log(typeof(function f(){})); //function
console.log(typeof([])); //object
为什么不是array
呢?该如何判断一个对象是object
还是array
类型呢?
typeof可以检测基本类型包括 undefined, string, number, boolean,但是对于检测对象就不靠谱了。
不只是Array,javascript中的对象,包括 Date, String, Boolean, Number, Object, Function, Array, RegExp, Error 使用typof只会返回 "object"。
下面给出4中方法:
//如果当前浏览器的Array构造函数对象中不包含isArray
if(!Array.isArray){
// 为Array构造函数添加isArray方法
Array.isArray=function(obj){
//判断obj是不是数组类型4种
//1. 如果Array.prototype在obj的原型链中
//return Array.prototype.isPrototypeOf(obj);
//2. 用instanceof: 语法:obj instanceof 构造函数名
//return obj instanceof Array;
//实例:一个构造函数创建出的每个具体对象
//3. 原型对象的constructor属性
//return obj.constructor==Array;
//4. 利用Object原型的toString方法
/*call,apply
call,在调用方法的一瞬间更换调用方法的对象*/
return Object.prototype.toString.apply(obj)=="[object Array]";
}
//
}
注意:(来自https://segmentfault.com/q/1010000000130605)
使用 instanceof 或者 constructor 来检测 Array 也不是靠谱的办法。
如果是待检测的数组来自一个iframe的数组时,instanceof和contructor都会失效。
由于每个iframe都有一套自己的执行环境,跨frame实例化的对象彼此是不共享原型链的。
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray(1,2,3); // [1,2,3]
arr instanceof Array; // false
arr.constructor === Array; // false
最新文章
- 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing
- [课程设计]Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)
- POJ1222_EXTENDED LIGHTS OUT
- scrapy 代理
- 消息队列MQ
- 重温《js权威指南》 第2-3章
- 在PC上测试移动端网站和模拟手机浏览器的5大方法
- redis中各种数据类型对应的jedis操作命令
- memcached的安装
- hibernate的3种状态
- Yii框架中的form表单
- 我是如何处理大并发量订单处理的 KafKa部署总结
- Matlab学习笔记(1)
- BotVS开发基础—2.1 账户、行情、K线、深度
- 【JVM虚拟机】(3)---垃圾回收器
- Handling Touches - RN3
- EasyUI的onLoadSuccess方法
- MVC的WebViewPage
- oracle 11g禁用和强制direct path read
- ubuntu安装chrome浏览器