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

發佈了45 篇原創文章 · 獲贊 15 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章