JS如何判断空对象,及typeof和instanceof的区别

来源:互联网 发布:领淘宝优惠券的软件 编辑:程序博客网 时间:2024/05/17 09:11

一、ECMAScript中有5种基本数据类型,分别为Undefined,Null,Boolean,Number,String。另外还有一种复杂数据类型Object,Object本质上是由一组无序的名值对组成的。创建Object实例有两种方法,第一种是使用new操作符后跟Object构造函数,如下代码所示:

var student=new Object();student.name="zhou";student.age="24";

另外一种是使用对象字面量表示法,它是定义对象的一种简单表示方法,在于简化创建包含大量属性的对象的过程。如下代码所含:

var student={    name:"zhou",    age:"24",};

简单的了解一下对象,关于JS如何判断一个对象是否为空,它不能像java这样的高级语言直接利用等值判断(==null)来判断,由于Object实质上是一种无序的名值对即字典,所以可以通过检测对象中是否有key值来判断对象是否为空。在Jquery中的一种方法是利用isEmptyObject()这个函数自定义实现,利用for…in…迭代实现,代码如下所示:使用这个函数的代码为:$.isEmptyObject(obj);

function isEmptyObject(obj){    for(var key in obj)    {        return false;    }     return true; }

当然对于原生的JS也可以通过这种方式实现,通过使用isEmptyObject(obj)。
二、typeof用于检测运算符的类型,它的返回值有以下几种情况:number,string,boolean,function,object,undefined,可以检测某个变量是否存在,如if(typeof(a)==”undefined”);而对于的特殊的Array和Null,typeof仍返回的是Object。
instanceof用于判断某个变量是否属于某个对象的实例,例如以下代码:

var a={};console.log(a instanceof Object);//true

前面已经讲到typeof遇到null,Array都会返回object,可以使用instaceof判断一个变量是否属于数组对象,如var a=new Array(),console.log(a instanceof Array);//true

0 0