簡單方法判斷JavaScript對象為null或者屬性為空

字號:


    首先說下null與undefined區(qū)別:
    對已聲明但未初始化的和未聲明的變量執(zhí)行typeof,都返回"undefined"。
    null表示一個空對象指針,typeof操作會返回"object"。
    一般不顯式的把變量的值設(shè)置為undefined,但null相反,對于將要保存對象的變量,應(yīng)明確的讓該變量保存null值。
    var bj;
    alert(bj); //"undefined"
    bj = null;
    alert(typeof bj); //"object"
    alert(bj == null); //true
    bj = {};
    alert(bj == null); //false
    下面兩個函數(shù)是鄧師兄給我的,感謝啊。
    /*
    * 檢測對象是否是空對象(不包含任何可讀屬性)。
    * 方法既檢測對象本身的屬性,也檢測從原型繼承的屬性(因此沒有使hasOwnProperty)。
    */
    function isEmpty(obj)
    {
    for (var name in obj)
    {
    return false;
    }
    return true;
    };
    這里所說的空對象,到底是 {} 還是 null . 我寫了一個測試用例。
    var a = {};
    a.name = 'realwall';
    console.log(isEmpty(a)); //false
    console.log(isEmpty({})); //true
    console.log(isEmpty(null)); //true
    //注意參數(shù)為null時無語法錯誤哦,即雖然不能對null空指針對象添加屬性,但可以使用for in 語句
    ?
    /*
    * 檢測對象是否是空對象(不包含任何可讀屬性)。
    * 方法只既檢測對象本身的屬性,不檢測從原型繼承的屬性。
    */
    function isOwnEmpty(obj)
    {
    for(var name in obj)
    {
    if(obj.hasOwnProperty(name))
    {
    return false;
    }
    }
    return true;
    };
    {}與null的區(qū)別:
    這個東西很重要。
    var a = {};
    var b = null;
    a.name = 'realwall';
    b.name = 'jim'; //這里會報錯,b為空指針對象,不能像普通對象一樣直接添加屬性。
    b = a;
    b.name = 'jim'; //此時 a 和 b 指向同一個對象。a.name, b.name 均為'jam'