前提:先研究javascript中的变量有几种,参考:

http://www.w3school.com.cn/js/js_datatypes.asp

http://glzaction.iteye.com/blog/1285147

测试1:

typeof关键字

var obj= {test:'test'};

typeof obj;//输出object

var list = [{test:'test'}];

typeof list;//输出object

var str = 'str';

typeof str;//输出string

var i = 1;

typeof i;//输出number

var b = false;

typeof b;//输出boolean

var n = null;

typeof n;//输出object

n==null;//输出true

var n;

typeof n;//输出undefined

直接输出一个没有定义的变量

typeof a;//输出undefined

function func(){}

typeof func;//输出function

以上可以发现,只能判断list和obj同时输出了object

在判断某个对象是否为指定类型时,可以用==或者===,比如:typeof func === 'function'或者typeof func == 'function'

测试2:

Object.prototype.toString.call( obj )

var obj= {test:'test'};

Object.prototype.toString.call( obj );//输出[object Object]

var list = [{test:'test'}];

Object.prototype.toString.call( list );//输出[object Array]

var str = 'str';

Object.prototype.toString.call( str );//输出[object String]

var i = 1;

Object.prototype.toString.call( i );//输出[object Number]

var b = false;

Object.prototype.toString.call( b );//输出[object Boolean]

var n = null;

Object.prototype.toString.call( n );//输出[object Null]

n==null;//输出true

var n;

Object.prototype.toString.call( n );//输出[object Undefined]

直接输出一个没有定义的变量

Object.prototype.toString.call( a );//输出:Uncaught ReferenceError: n1 is not defined,会报异常,阻止执行下面

function func(){}

Object.prototype.toString.call( function );//输出[object Function]

这个方法可以很明确的直到obj和list的类型

判断时使用Object.prototype.toString.call( list )==='[object Array]'或者Object.prototype.toString.call( list )=='[object Array]',==或者===一样的效果。

测试3:

如果使用jquery,可以使用$.isArray(obj)的方法,如下:

var a = ["A", "AA", "AAA"];
if($.isArray(a)) {console.log("a is an array!");
} else {console.log("a is not an array!");
}

但是测试发现,只能判断数组,没有判断对象的方法。

测试4:

instanceof 关键字

var obj= {test:'test'};

var str = 'str';

var i = 1;
var b = false;

var list = [{test:'test'}];

var n = null;

function func(){}

通过测试,使用如:obj instanceof Object的形式,只能是判断两种类型Object和Array,其中Boolean、Number、String可以判断,但是会返回false,如上面i和b变量;如果判断为null或者undefind会报Uncaught TypeError: Right-hand side of 'instanceof' is not an object这样的错误。

测试5:

直接通过Array.isArray(obj),javascript的原生方法,不过这个只能判断数组。

测试5:

通过obj.constructor关键字

var obj= {test:'test'};

var str = 'str';

var i = 1;
var b = false;

var list = [{test:'test'}];

var n = null;

function func(){}

通过测试,使用如:str == String.constructor的形式,只能判断Object、Array、String、Boolean、Number,对于null、function、undefind这些会报异常。

参考:

http://stackoverflow.com/questions/4775722/check-if-object-is-array

http://www.jb51.net/article/21945.htm

Javascript判断object还是list/array的类型(包含javascript的数据类型研究)相关推荐

  1. Javascript 判断 object 的特定类

    大家都知道 Javascript 的 typeof 可以获取变量的类型, 但是 typeof 返回值只有六种 "number," "string," " ...

  2. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  3. javascript判断浏览器和终端类型,js如何区分手机、电脑终端和浏览器

    判断浏览器类型 复制代码代码如下: if ( window.sidebar && "object" == typeof( window.sidebar ) & ...

  4. JavaScript 判断变量是否为数组Array的方法

    1. 不能用typeof ,因为typeof 只能判断基本类型,不能判断引用类型 var ary = [1,23,4]; console.log(typeof ary); //输出结果是Object ...

  5. JavaScript判断是否为数值类型 - js的数据类型

    需求 数值,或者数值型字符串,比如"123"可以通过校验. 其他类型不能通过校验. 举例 输入 结果 145 √ "145" √ "145ccc&qu ...

  6. 判断Object类型的数据是否为空

    大家都知道判断string类型的数据是否为空用TextUtils,那么Object类型的数据是否为空怎么判断呢? 今天就给他家推荐一个封装好的判断object类型的数据是否为空的Utils /*** ...

  7. 【javaScript】Object.prototype.toString.call() 、 instanceof 以及 Array.isArray() 区别与优化层面的比较

    1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...

  8. JavaScript判断浏览器类型及版本

    JavaScript判断浏览器类型及版本 你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器. 几天前,浏览器家族有 ...

  9. python isinstance函数判断object的类型

    isinstance(object, class-or-type-or-tuple) -> bool 用以判断object的类型 如: >>>>lst = [1, 2, ...

最新文章

  1. 工具:分享IntelliJ IDEA 5条调试技巧,太实用了!
  2. 迈向现代化的 .Net 配置指北
  3. 【算法设计与分析】14 分治算法的一般描述和分析方法
  4. LeetCode 415. 字符串相加(大数加法)
  5. Android备份onedrive,三星Note10正将OneDrive集成到Android相册应用中
  6. python编写图像识别_python实现识别相似图片小结
  7. PHPCMS怎么创建单选按钮、复选框,并在模板里怎么接收和调用。
  8. Android Behavior详解
  9. Java 电阻计算器(一)
  10. win7远程桌面链接
  11. iphone快捷指令蚂蚁森林能量_iPhone「快捷指令」怎么玩?玩法太多,别让这个功能吃灰...
  12. GRYZ 模 拟 赛 系 列 Xxy 的车厢调度
  13. 真正的人品,藏在对弱者的态度里
  14. unity 阿拉伯文显示
  15. lumen报错Class redis does not exist
  16. 算法、图灵机、哥德尔定理与知识的不确定性
  17. 机器学习 —— 简单模型的构建
  18. 通过 JFR 与日志深入探索 JVM - TLAB 原理详解
  19. 游戏中子弹的回收重用
  20. 谷歌cloud_Google Cloud如何为您的应用程序安全提供帮助?

热门文章

  1. Oracle数据库Date类型查询问题(
  2. 终于,我读懂了所有Java集合——List篇
  3. C++:23 再议const的用法(下)
  4. android 存储方式以及路径简介
  5. 《C++ Primer 5th》笔记(5 / 19):语句
  6. java图形用户登录界面_Java简单登录图形界面
  7. 数据库 流量切分_私域流量之社群运营技巧,社群运营技巧解析
  8. 数学建模 层次分析法
  9. 英语口语Week 15 Wednesday
  10. 不花钱就补足营养的8妙招