js数组类型判断与数据类型判断回顾

前两天参加了百度前端的电话面试,其中问到了数组类型的判断问题,虽然以前看过这方面的内容,但时间久了有点模糊,答得不怎么好,现在对相关内容做个回顾和总结。

先来回答这个问题:如何判断一个对象是数组?

判断一个对象是否是数组方法有多种:

一、Array.isArray()函数

在ECMAScript5中可以通过Array.isArray()来做这件事:

Array.isArray({});    //false
Array.isArray([]);    //true

二、instanceof

instanceof操作符用于判断一个变量是否为一个对象的实例,只能用于简单的情形:

[] instanceof Array    //true
{} instanceof Array    //false

instanceof的问题:在web浏览器中,可能存在多个窗口或多个窗体,每个窗口都有自己js环境和自己的全局对象,每个对象都有自己的一组构造函数,因此一个窗体的对象不可能是另外窗体中的构造函数的实例,窗体中的混淆不常发生。

三、prototype与call

Object.prototype.toString.call([])==="[object Array]"    //true
Object.prototype.toString.call({})==="[object Array]"    //false

四、constructor

constructor返回对象的构造函数

[].constructor==Array    //true
{}.constructor==Array    //false

注意:使用instanceof和construtor来判断数组 ,被判断的数组必须是在当前页面声明的。比如,在一个子页面中声明了一个数组,并将其值赋给父页面的一个变量,这时判断这个变量:变量.constructor==Array;此时返回false。

原因:数组属于引用数据,在传递过程中仅仅传递引用地址;每个页面Array原生对象的所引用的地址是不一样的,也就是说父页面的Array并不等于子页面的Array。

其他类型的判断方法和数组类似,下面是关于instanceof和constructor返回值的一个列表:

变量 变量.constructor typeof 变量
[]   Array object
{} Object object
var f=function(){} Fuction function
"a string" String string
88 Number number
True Boolean boolean
var a / undefined
null / object
new User() User object
时间: 2025-01-12 22:25:29

js数组类型判断与数据类型判断回顾的相关文章

js数组类型检测

一.typeof检测给定变量的数据类型: 语法:typeof 变量 未定义undefined:undefined boolean:boolean 字符串:string 数值:number 对象:object null:object 函数:function 数组(也是对象):object 二.instanceof 语法:变量 instanceof Array 如果是数组的话返回true,操作undefined和null会报错:检测其他类型的变量会返回false. 三.ECMAScript5新增了A

js数据类型判断和数组判断

这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number:什么整数啊浮点数啊都叫数字,你懂的~ Boolean: 就是true和false啦 undefined:未定义,就是你创建一个变量后却没给它赋值~ null: 故名思久,null就是没有,什么也不表示 object: 这个我也很难解释的

判断数据类型和数组类型

js数据类型判断和数组判断 这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number:什么整数啊浮点数啊都叫数字,你懂的~ Boolean: 就是true和false啦 undefined:未定义,就是你创建一个变量后却没给它赋值~ null: 故名思久,null就是没有,什么也不表示 obj

判断一个变量是数组类型的方法

在很多时候,我们都需要对一个变量进行数组类型的判断(借鉴) 学过js就应该知道typeof运算符返回字符串,该字符串代表操作数的类型(即返回数据类型)这是最常用的. 下面多种实现方式: JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function.String.Number.Undefined等,但是要是检测Array的对象就不起作用了. alert(typeof null); // "object" alert(ty

(转)js 判断各种数据类型

了解js的都知道, 有个typeof  用来判断各种数据类型,有两种写法:typeof   xxx   ,typeof(xxx) 如下实例: typeof   2      输出   number       typeof   null   输出   object typeof   {}    输出   object typeof    []    输出   object typeof   (function(){})   输出  function typeof    undefined    

js 判断各种数据类型

原文:js 判断各种数据类型 了解js的都知道, 有个typeof  用来判断各种数据类型,有两种写法:typeof   xxx   ,typeof(xxx) 如下实例: typeof   2      输出   number       typeof   null   输出   object typeof   {}    输出   object typeof    []    输出   object typeof   (function(){})   输出  function typeof  

js中判断对象数据类型的方法

1.类型定义 JS是一种弱类型语言.JS拥有动态类型,相同的变量可以用作不同的类型.JS有7种数据类型:三种基本类型(数字,字符串,布尔),两种引用数据类型(对象,数组),两种特殊数据类型(undefined,null). JS有5种原始类型:数字,字符串,布尔,undefined,null. 2.类型判断 对js中不同数据的布尔值类型总结:false:空字符串:null:undefined:0:NaN.true:除了上面的false的情况其他都为true: 如下: var o = { 'nam

怎么判断一个对象是不是数组类型?

前面<变量的赋值和对象的赋值>中有用到typeof运算符去判断运算数的类型,结果如下: alert(typeof 1); // 返回字符串"number" alert(typeof "1"); // 返回字符串"string" alert(typeof true); // 返回字符串"boolean" alert(typeof {}); // 返回字符串"object" alert(typeof

Underscore.js 常用类型判断以及一些有用的工具方法

1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的函数. 第一: 在ES5里面有一个检测数组的函数,就是Array.isArray(); (毕竟原生的才是最屌的)但是如果老版本的浏览器不支持ES5呢.那怎么办 所以我们这个时候要想其他的办法.   来回忆下 instanceof 运算符的使用方式.a instanceof b,如果返回 true,表