JS如何判斷空物件,及typeof和instanceof的區別
一、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