摘要:類型判斷判斷的類型,單單用并無法完全滿足,這其實(shí)并不是,本質(zhì)原因是的萬物皆對(duì)象的理論。獲取參數(shù)全局尺寸設(shè)置說明常用長(zhǎng)度單位。
1、類型判斷
判斷 Target 的類型,單單用 typeof 并無法完全滿足,這其實(shí)并不是 bug,本質(zhì)原因是 JS 的萬物皆對(duì)象的理論。因此要真正完美判斷時(shí),我們需要區(qū)分對(duì)待:
基本類型(null): 使用 String(null)
基本類型(string / number / boolean /undefined) + function: 直接使用 typeof即可
其余引用類型(Array / Date / RegExp Error): 調(diào)用toString后根據(jù)[object XXX]進(jìn)行判斷
很穩(wěn)的判斷封裝:
let class2type = {} "Array Date RegExp Object Error".split(" ").forEach(e => class2type[ "[object " + e + "]" ] = e.toLowerCase()) function type(obj) { if (obj == null) return String(obj) return typeof obj === "object" ? class2type[ Object.prototype.toString.call(obj) ] || "object" : typeof obj }
2、防抖和節(jié)流
摘自https://segmentfault.com/a/11...
防抖 (debounce): 將多次高頻操作優(yōu)化為只在最后一次執(zhí)行,通常使用的場(chǎng)景是:用戶輸入,只需再輸入完成后做一次輸入校驗(yàn)即可。
function debounce(fn, wait, immediate) { let timer = null return function() { let args = arguments let context = this if (immediate && !timer) { fn.apply(context, args) } if (timer) clearTimeout(timer) timer = setTimeout(() => { fn.apply(context, args) }, wait) } }
節(jié)流(throttle): 每隔一段時(shí)間后執(zhí)行一次,也就是降低頻率,將高頻操作優(yōu)化成低頻操作,通常使用場(chǎng)景: 滾動(dòng)條事件 或者 resize 事件,通常每隔 100~500 ms執(zhí)行一次即可。
function throttle(fn, wait, immediate) { let timer = null let callNow = true return function() { let context = this, args = arguments if (callNow) { fn.apply(context, args) callNow = false } if (!timer) { timer = setTimeout(() => { fn.apply(context, args) timer = null }, wait) } } }
3、獲取URL參數(shù)
function getUrlKey(name){ return encodeURIComponent((new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(location.href)||[,""])[1].replace(/+g,"%20")) || null; }
4、全局尺寸設(shè)置
說明:常用長(zhǎng)度單位px、em、rem。其中px是物理像素,固定大小,無自適應(yīng)特點(diǎn);em是相對(duì)單位,以父元素大小為基準(zhǔn)倍率,但累計(jì)疊乘,容易出錯(cuò);rem相對(duì)單位,以根元素大小為基準(zhǔn)倍率(document.documentElement.style.fontSize),不疊加,可實(shí)現(xiàn)準(zhǔn)確自適應(yīng)。
;(function(win,doc){ function setRem(){ //以iphone6為標(biāo)準(zhǔn),按屏幕大小實(shí)現(xiàn)屏幕基礎(chǔ)尺寸縮放,16px是文檔的默認(rèn)尺寸(即1rem默認(rèn)為16px),為方便計(jì)算可變更為50或者100(對(duì)應(yīng)1rem=50px或者100px) doc.documentElement.style.fontSize = 16 * doc.documentElement.clientWidth / 375 + "px"; } setRem(); //監(jiān)聽resize事件,屏幕大小發(fā)生變化時(shí),隨時(shí)變換基礎(chǔ)尺寸 win.addEventListener("resize",function(){ setRem(); },false); })(window,document)
5、深拷貝數(shù)據(jù)
應(yīng)用類型(array、object)按引用使用,不能復(fù)制,想要復(fù)制(深拷貝)需要新建對(duì)象,把目標(biāo)的對(duì)象的屬性逐個(gè)拷貝。
function copyArr (arr){ return arr.map((e) => { if(typeof e ==="object"){ return Object.assign({},e) }else { return e } }) }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/117369.html
摘要:類型判斷判斷的類型,單單用并無法完全滿足,這其實(shí)并不是,本質(zhì)原因是的萬物皆對(duì)象的理論。獲取參數(shù)全局尺寸設(shè)置說明常用長(zhǎng)度單位。 1、類型判斷 判斷 Target 的類型,單單用 typeof 并無法完全滿足,這其實(shí)并不是 bug,本質(zhì)原因是 JS 的萬物皆對(duì)象的理論。因此要真正完美判斷時(shí),我們需要區(qū)分對(duì)待: 基本類型(null): 使用 String(null) 基本類型(string...
摘要:類型判斷判斷的類型,單單用并無法完全滿足,這其實(shí)并不是,本質(zhì)原因是的萬物皆對(duì)象的理論。獲取參數(shù)全局尺寸設(shè)置說明常用長(zhǎng)度單位。 1、類型判斷 判斷 Target 的類型,單單用 typeof 并無法完全滿足,這其實(shí)并不是 bug,本質(zhì)原因是 JS 的萬物皆對(duì)象的理論。因此要真正完美判斷時(shí),我們需要區(qū)分對(duì)待: 基本類型(null): 使用 String(null) 基本類型(string...
摘要:前言一直混跡社區(qū)突然發(fā)現(xiàn)自己收藏了不少好文但是管理起來有點(diǎn)混亂所以將前端主流技術(shù)做了一個(gè)書簽整理不求最多最全但求最實(shí)用。 前言 一直混跡社區(qū),突然發(fā)現(xiàn)自己收藏了不少好文但是管理起來有點(diǎn)混亂; 所以將前端主流技術(shù)做了一個(gè)書簽整理,不求最多最全,但求最實(shí)用。 書簽源碼 書簽導(dǎo)入瀏覽器效果截圖showImg(https://segmentfault.com/img/bVbg41b?w=107...
摘要:切圖主要是用的工具就是等等,除此之外,在開發(fā)過程中我們也會(huì)用到其他工具,以下介紹一些有關(guān)于圖片處理的操作。是打開文件捕捉活動(dòng)窗口捕獲窗口捕獲矩形區(qū)域,可自行截圖。新版的比之前那些版本增加了一鍵導(dǎo)出功能,這個(gè)功能很大程度方便了我們拆分圖片。 在寫頁面之前,很重要的一個(gè)技能是切圖,根據(jù)UI設(shè)計(jì)的設(shè)計(jì)圖,在了解頁面結(jié)構(gòu)和操作后進(jìn)行分割,取出自己在開發(fā)過程中是用到的圖片資源。切圖主要是用的工具...
摘要:切圖主要是用的工具就是等等,除此之外,在開發(fā)過程中我們也會(huì)用到其他工具,以下介紹一些有關(guān)于圖片處理的操作。是打開文件捕捉活動(dòng)窗口捕獲窗口捕獲矩形區(qū)域,可自行截圖。新版的比之前那些版本增加了一鍵導(dǎo)出功能,這個(gè)功能很大程度方便了我們拆分圖片。 在寫頁面之前,很重要的一個(gè)技能是切圖,根據(jù)UI設(shè)計(jì)的設(shè)計(jì)圖,在了解頁面結(jié)構(gòu)和操作后進(jìn)行分割,取出自己在開發(fā)過程中是用到的圖片資源。切圖主要是用的工具...
閱讀 610·2021-10-08 10:20
閱讀 1496·2021-09-23 11:22
閱讀 3229·2019-08-30 15:55
閱讀 1616·2019-08-28 18:25
閱讀 1872·2019-08-28 18:14
閱讀 1245·2019-08-26 11:37
閱讀 2907·2019-08-26 10:18
閱讀 2433·2019-08-23 18:39