摘要:這種情況如果在日常使用的時候是可以使用第一種的,如果需要大數(shù)據(jù)交互中僅僅是某一個判斷的話,還是用第二種吧,畢竟涉及到循環(huán),性能差距還是很大的思考既然用到了,那么如何使用呢,兼容性如何呢,如何自己實現(xiàn)一個呢
如何判斷一個對象是一個空對象(不帶繼承的原型屬性,如果帶的話只能用for in)
空對象的呈現(xiàn)是var obj = {}
function IsEmptyObject(obj){ if(!obj || typeof obj != "object" || Array.isArray(obj)){ return false; } //第一種 //測試性能段 /* console.time("first"); if(JSON.stringify(obj) === "{}"){ console.timeEnd ("first"); return true }else{ console.timeEnd ("first"); return false; } */ return (JSON.stringify(obj) === "{}") //第二種 console.time("second"); for(var key in obj){ console.timeEnd ("second"); return false } console.timeEnd ("second"); return true; //第三種 return (Object.keys(obj).length === 0) }解決思路
第一種就是粗暴的直接轉(zhuǎn)字符串,然后強行比較
第二種就是利用for in的原理,然后一旦進了循環(huán),說明有key值,那就直接false啦,否則就是空對象
下面測試一下兩個方法的性能比較
第一種在a就是一個空對象的情況下,在Imac谷歌瀏覽器上平均耗時在0.012ms左右
第二種在a就是一個空對象的情況下,在Imac谷歌瀏覽器上平均耗時在0.007ms左右,性能差距為兩倍
第一種在a是一個普通對象的情況下,豆瓣的api對象,在Imac谷歌瀏覽器上平均耗時在0.08ms左右
第二種在a是一個普通對象的情況下,豆瓣的api對象,在Imac谷歌瀏覽器上,第一次稍慢,0.02ms,平均耗時在0.0075ms左右,性能差距隨著對象越大,差距也會越大
總結(jié)。這種情況如果在日常使用的時候是可以使用第一種的,如果需要大數(shù)據(jù)交互中僅僅是某一個判斷的話,還是用第二種吧,畢竟涉及到循環(huán),性能差距還是很大的思考
既然用到了JSON.stringify,那么JSON.stringfy/parse如何使用呢,兼容性如何呢,如何自己實現(xiàn)一個呢
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/83371.html
摘要:注意類繼承時的問題繼承自方法中對象直接繼承和間接繼承的都會報解決的問題通常是讓對象的手動指向自己將自己的類賦值給對象的屬性基類不會報了原博參考,,,,判斷為 js基礎(chǔ)(二):構(gòu)造函數(shù)與原型 一、常見實例 判斷是否為對象 let obj = {} // 1.Object.prototype.toString if (Object.prototype.toString.call(obj...
摘要:我們一般用來深拷貝,其過程說白了,就是利用將對象序列化字符串,再使用來反序列化還原對象。至于這行代碼為什么能實現(xiàn)深拷貝,以及它有什么局限性等等,不是本文要介紹的。小結(jié)論能不用和就不用,采用替代方案且性能更優(yōu)的。 JSON.parse(JSON.stringify(obj))我們一般用來深拷貝,其過程說白了,就是利用 JSON.stringify 將js對象序列化(JSON字符串),再使...
摘要:中常常會看到這種代碼變量與的比較這種用法很有問題用來判斷變量是否被賦予了一個合理的值比如不好的寫法執(zhí)行一些邏輯這段代碼中方法顯然是希望是一個數(shù)組因為我們看到的擁有和這段代碼的意圖非常明顯如果參數(shù)不是一個數(shù)組則停止接下來的操作這種寫法的問題在 js中, 常常會看到這種代碼: 變量與null的比較(這種用法很有問題), 用來判斷變量是否被賦予了一個合理的值. 比如: const Contr...
摘要:本文,棧長將帶你了解什么是空指針,還有如何有效的避免空指針。如何避免空指針下面說幾個空指針的幾個最常見的案例及解決之道。字符串比較,常量放前面這個時候可能為造成空指針異常,應(yīng)該把常量放前面,就能避免空指針異常。 空指針是我們 Java 開發(fā)人員經(jīng)常遇到的一個基本異常,這是一個極其普遍但似乎又無法根治的問題。 本文,棧長將帶你了解什么是空指針,還有如何有效的避免空指針。 什么是空指針? ...
摘要:用對象字面量創(chuàng)建的對象會報錯,使用構(gòu)造函數(shù)創(chuàng)建的對象屬于。發(fā)現(xiàn),構(gòu)造函數(shù)創(chuàng)建的,,,,。從原型鏈角度講,構(gòu)造函數(shù)就是新對象的的類型。 一、前言 類型判斷有時候真的頭疼,但是一旦熟練使用就會覺得不過如此。初級的,會判斷數(shù)字和字符串。中級的,會判斷數(shù)組和對象。進階的,會判斷日期,正則,錯誤類型。高級的,會判斷plainObject,空對象,window對象等等。 基本類型:String、N...
閱讀 3457·2021-11-17 17:00
閱讀 3818·2021-08-09 13:46
閱讀 2866·2019-08-30 15:54
閱讀 627·2019-08-30 13:54
閱讀 2945·2019-08-29 17:13
閱讀 3219·2019-08-29 14:00
閱讀 2975·2019-08-29 11:11
閱讀 1379·2019-08-26 10:15