中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS判斷空對象的方法有哪些

發布時間:2022-02-16 09:10:31 來源:億速云 閱讀:140 作者:小新 欄目:開發技術

小編給大家分享一下JS判斷空對象的方法有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    Object.keys

    Object.keys()方法是以對象為參數,返回一個包含該對象內所匹配的屬性和方法的數組

      var obj = {
        name: "cxy",
        age: "19"
      }; 
      var objArray = Object.getOwnPropertyNames(obj);
      console.log(objArray)

    JS判斷空對象的方法有哪些

    可以看到objArray為返回值,且返回值為以對象內的屬性為內容的數組

    Object.getOwnPropertyNames

    Object.getOwnPropertyNames()方法同樣是也是以對象為參數,返回一個包含該對象內所匹配的屬性和方法的數組

    大家在這里會發出疑問,這兩個有啥區別?Object.getOwnPropertyNames()可以返回所有的屬性,而Object.keys()只能返回可枚舉屬性,誒?到這里大家又疑惑了可枚舉屬性又是個啥?不要著急,我來解釋一下什么叫可枚舉屬性

    可枚舉屬性

    可枚舉或者不可枚舉屬性是對象內部通過可枚舉標志enumerable來進行區分的,在默認情況下,我們obj.name = "cxy"為對象新增了一個屬性后,其可枚舉標志enumerable為ture,而當其值為false的時候它是不可枚舉的,當我們對對象進行for,Object.keys(),JSON.stringify()的時候不可枚舉屬性是找不出來的,我們可以理解為不可枚舉屬性是隱身

    現在我們拿上面的Object.getOwnPropertyNamesObject.keys()進行實戰舉例,我們通過defineProperty來為對象添加age屬性,因為該方法可以設置枚舉標志,這里設置為false,可以看到下面兩個不同的返回結果

    var stuObj = {
        name: "cxy"
    }
    Object.defineProperty(stuObj, 'age', {
      value: "18",
      enumerable: false
    });
    console.log(Object.keys(stuObj))
    console.log(Object.getOwnPropertyNames(stuObj))

    JS判斷空對象的方法有哪些

    hasOwnProperty

    hasOwnProperty()是用來判斷某對象是否含有某屬性的,其參數為屬性名

      var stuObj = {
        name: "cxy"
      }
      console.log(stuObj.hasOwnProperty('name'))

    JS判斷空對象的方法有哪些

    但是這里要注意一個問題就是,hasOwnProperty()判斷繼承屬性的時候會返回false,繼承屬性即對象從原型對象上繼承的屬性,比如說toString

    盤點判空方法

    JSON.stringify判空

    這種方式是比較簡單的了,使用JSON.stringify將對象轉換為字符串,再通過等于判斷即可得到對象是否為空的布爾值

    let obj = {
        name: "cxy"
    }
    console.log(JSON.stringify(obj) == '{}')

    for in判空

    使用for in的話可以當觸發循環的時候返回false沒有觸發循環的時候代表對象為空返回ture

    let forNull = (items) => {
        for (let item in items) {
            return false
        }
        return true
    }

    Object.getOwnPropertyNames判空

    這里使用了上文提及的Object.getOwnPropertyNames,將返回的數組的length作為判斷依據。

    let stuArray = Object.getOwnPropertyNames(obj)
    console.log(stuArray.length === 0)

    Object.keys()判空

    和上個方法一樣,使用數組作為判斷依據

    let stuArray = Object.getOwnPropertyNames(obj)
    console.log(stuArray.length === 0)

    hasOwnProperty判空

    使用hasOwnProperty是使用for循環將元素進行判斷如果含有則返回false說明不為空,反之則為空

    let forNull = (items) => {
        for (let item in items) {
            if(items.hasOwnProperty(item)){
                return false
            }
        }
        return true
    }

    附將對象轉換為字符串進行比較

    這種方法很不推薦,但也確實是最容易想到的,主要使用JSON.stringify()這個方法對對象進行強轉,貼出來僅供一看: 

    var a={};
    var b=new Object();
    console.log("對象字面量的比較結果:"+(JSON.stringify(a)=="{}"))
    console.log("構造函數的比較結果:"+(JSON.stringify(b)=="{}"))

    以上是“JS判斷空對象的方法有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    js
    AI

    潢川县| 武宁县| 蕉岭县| 呼和浩特市| 江陵县| 辉南县| 体育| 剑阁县| 潼南县| 赤水市| 兴文县| 惠州市| 沂源县| 航空| 怀远县| 河西区| 赣榆县| 宁乡县| 陵水| 怀仁县| 长垣县| 上思县| 桑日县| 屏边| 尚义县| 溧水县| 伊金霍洛旗| 昌吉市| 昌宁县| 道孚县| 桑植县| 南城县| 和龙市| 尼勒克县| 桂林市| 北宁市| 东乌| 南乐县| 宁蒗| 龙井市| 石河子市|