js空對象判斷 isPlainObject


//有缺陷,JSON.stringify(obj)中,如果obj本來是空的,又繼承了一個非空的對象那么結果也會是“{}”
1. JSON.stringify(obj) == '{}' 

2. Object.keys(obj).length == 0 

//錯誤,當對象為空Array,length為1,空arguments時,length為2
//具體參考https://github.com/arasatasaygin/is.js/blob/master/is.js
3. Object.getOwnPropertyNames(value).length == 0 

4. 一個完備的方法

//出自https://github.com/sindresorhus/is/blob/master/source/index.ts

function isPlainObject(obj){
    let prototype;

    return Object.prototype.toString.call(obj) === '[object Object]' 
        && (prototype = Object.getPrototypeOf(obj), prototype === null || 
        prototype == Object.getPrototypeOf({}))
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM