網上已經有不少的回答了分別是jquery
for in (jquery中就是這麼實現的) for of JSON.stringify() == '{}' Object.getOwnPropertyNames() Object.keys() Object.values() Underscore.js中的isEmpty
這些辦法在判斷常規的對象的時候沒有問題,,當一個對象爲空的時候獲得的答案也是預期的面試
可是
當對象中有symbol做爲鍵值的時候呢???api
測試:
測試
結果:spa
就會被誤覺得是空的
雖然還有一個方法Object.getOwnPropertySymbols能夠拿到,可是在正常的對象中他又爲空了code
雖然把他們組合起來就能夠解決問題,可是有一個新的api叫Reflect.ownKeys(),能夠更方便的解決對象
固然咋真正用的時候不多會那symbol去作一個對象的鍵值,可是在面試的時候,,這個問題能夠說是高頻問題了blog
以上。ip