摘要:網上已經有很多的回答了分別是中就是這么實現的中的這些辦法在判斷常規的對象的時候沒有問題,,當一個對象為空的時候得到的答案也是預期的但是當對象中有作為鍵值的時候呢測試結果就會被誤以為是空的雖然還有一個方法可以拿到,但是在正常的對象中他又為空了
網上已經有很多的回答了分別是
for in (jquery中就是這么實現的) for of JSON.stringify() == "{}" Object.getOwnPropertyNames() Object.keys() Object.values() Underscore.js中的isEmpty
這些辦法在判斷常規的對象的時候沒有問題,,當一個對象為空的時候得到的答案也是預期的
但是
當對象中有symbol作為鍵值的時候呢???
測試:
結果:
就會被誤以為是空的
雖然還有一個方法Object.getOwnPropertySymbols可以拿到,但是在正常的對象中他又為空了
雖然把他們組合起來就可以解決問題,但是有一個新的api叫Reflect.ownKeys(),可以更方便的解決
當然咋真正用的時候很少會那symbol去做一個對象的鍵值,但是在面試的時候,,這個問題可以說是高頻問題了
以上。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/101086.html
摘要:我們一般用來深拷貝,其過程說白了,就是利用將對象序列化字符串,再使用來反序列化還原對象。至于這行代碼為什么能實現深拷貝,以及它有什么局限性等等,不是本文要介紹的。小結論能不用和就不用,采用替代方案且性能更優的。 JSON.parse(JSON.stringify(obj))我們一般用來深拷貝,其過程說白了,就是利用 JSON.stringify 將js對象序列化(JSON字符串),再使...
摘要:簡化版如果有更好的方法歡迎留言請關注我的訂閱號,不定期推送有關的技術文章,只談技術不談八卦 showImg(https://segmentfault.com/img/remote/1460000018733493?w=640&h=426); ?? 更多前端技術和知識點,搜索訂閱號 JS 菌 訂閱 檢查一個數組為空很容易,直接調用 length 方法即可,那么如何檢查一個對象是否為空呢 ...
摘要:即使現在支持,由于沒有多線程的機制,和執行線程只能通過來通信,而且由于沒有鎖,無法訪問和對象。的單線程是指一個瀏覽器進程中只有一個的執行線程,即同一時刻內只會有一段代碼在執行。與單線程如何實現異步設計了一個事件循環的方式。眾所周知,JavaScript(以下簡稱 JS) 是單線程語言,在 html5 中增加了 web workers,web workers 是新開了線程執行的,那么 JS 還...
摘要:注意類繼承時的問題繼承自方法中對象直接繼承和間接繼承的都會報解決的問題通常是讓對象的手動指向自己將自己的類賦值給對象的屬性基類不會報了原博參考,,,,判斷為 js基礎(二):構造函數與原型 一、常見實例 判斷是否為對象 let obj = {} // 1.Object.prototype.toString if (Object.prototype.toString.call(obj...
摘要:對象字面量形式通過構造函數創建中是如何判斷的呢判斷是否為純粹的對象,必須滿足首先必須是對象不是對象并且原型要和的原型相等方法返回指定對象的原型即內部屬性的值如果沒有繼承屬性,則返回。 前言 時間過得可真快,轉眼間2017年已去大半有余,你就說嚇不嚇人,這一年你成長了多少,是否荒度了很多時光,亦或者天天向上,收獲滿滿。今天主要寫一些看Zepto基礎模塊時,比較實用的部分內部方法,在我們日...
閱讀 890·2021-10-27 14:19
閱讀 1114·2021-10-15 09:42
閱讀 1538·2021-09-14 18:02
閱讀 745·2019-08-30 13:09
閱讀 2990·2019-08-29 15:08
閱讀 2093·2019-08-28 18:05
閱讀 958·2019-08-26 10:25
閱讀 2789·2019-08-23 16:28