【js学习笔记-044】-- 数组类型
2013-07-25 18:01
246 查看
ECMAScript5:判断数组类型
Array.isArray([]) ; //=>true
Array.isArray({}); //=>false
但ECMAScript5之前:
区分数组和非数组对象却很困难,typeof操作符这里帮不上忙:数组返回对象,并且除函数以外的所有对象都是如此。
instanceof也只能用于简单情形如:
[] instanceof Array; //=>true;
({}) instanceof Array ; //=>false;
注意会有这样一种情况,浏览器中有可能有多个窗口,窗体(frame)存在。每个窗口都有自己的 js环境,有自己的全局对象。并且,每个全局对象有自己的一组构造函数。因此一个窗体的对象将不可能是另外窗体中的构造函数的实例。窗体之间的混淆不常发生,但这个问题中已证明instanceof操作符不能视为一个可靠的数组检测方法
ECMAScript3解决方案:通过查询ECMASCript3中的isArray()函数代码可如下
var isArray = Function.isArray || function(o){
return typeof o=== “object” &&
Object.prototype.toString.call(o)=== “[object Array]”;
}
Array.isArray([]) ; //=>true
Array.isArray({}); //=>false
但ECMAScript5之前:
区分数组和非数组对象却很困难,typeof操作符这里帮不上忙:数组返回对象,并且除函数以外的所有对象都是如此。
instanceof也只能用于简单情形如:
[] instanceof Array; //=>true;
({}) instanceof Array ; //=>false;
注意会有这样一种情况,浏览器中有可能有多个窗口,窗体(frame)存在。每个窗口都有自己的 js环境,有自己的全局对象。并且,每个全局对象有自己的一组构造函数。因此一个窗体的对象将不可能是另外窗体中的构造函数的实例。窗体之间的混淆不常发生,但这个问题中已证明instanceof操作符不能视为一个可靠的数组检测方法
ECMAScript3解决方案:通过查询ECMASCript3中的isArray()函数代码可如下
var isArray = Function.isArray || function(o){
return typeof o=== “object” &&
Object.prototype.toString.call(o)=== “[object Array]”;
}
相关文章推荐
- js数组处理学习笔记一
- JS学习笔记-基础理论+数组
- 数据类型回顾——数据类型转换(显式和隐式)—JS学习笔记2015-6-3(第47天)
- js学习笔记-引用类型
- 【学习】js学习笔记:数组(二)
- c#学习笔记--数组、枚举、结构、值类型和引用类型
- JS 学习笔记--8---Function类型
- 引用类型1——JS学习笔记2015-6-23(第64天)
- swift学习笔记(一)(常量、变量、数据类型、字符串的拼接、数组、字典)
- js学习笔记13----数组的操作
- js学习笔记:引用类型——Object
- php 学习笔记 —— 变量 数据类型 数组 (二)
- JS学习笔记-数据类型
- js学习之javascript引用类型object--练习模拟Map和数组去重
- 【JS学习笔记】基本包装类型
- Delphi 2010学习笔记(10)---数据类型(数组)---2011-01-19
- JS学习笔记2——利用filter()去除数组中的重复元素,利用filter()筛选出数组中的素数
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第27讲_js一维数组_一维数组细节_学习笔记_源代码图解_PPT文档整理
- 引用类型2 Array——JS学习笔记2015-6-24(第65天)
- js学习笔记 chapter5 引用类型