日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JS小知識,分享工作中常用的八個封裝函數,讓你事半功倍

來源: 責編: 時間:2024-01-08 09:17:20 220觀看
導讀一、回到頂部當頁面很長時,如果用戶想回到頁面頂部,必須滾動滾動鍵幾次才能回到頂部。如果頁面右下角有“返回頂部”按鈕,用戶可以點擊返回頂部。對于用戶來說,這是一個很好的用戶體驗。// Method 1 constbindTop1 = ()

wZJ28資訊網——每日最新資訊28at.com

一、回到頂部

當頁面很長時,如果用戶想回到頁面頂部,必須滾動滾動鍵幾次才能回到頂部。如果頁面右下角有“返回頂部”按鈕,用戶可以點擊返回頂部。對于用戶來說,這是一個很好的用戶體驗。wZJ28資訊網——每日最新資訊28at.com

// Method 1  constbindTop1 = () => {      window.scrollTo(0, 0)      document.documentElement.scrollTop = 0;  }        // Method 2: Scrolling through the timer will be visually smoother, without much lag effect    constbindTop2 = () => {      const timeTop = setInterval(() => {        document.documentElement.scrollTop = scrollTopH.value -= 50        if (scrollTopH.value <= 0) {          clearInterval(timeTop)        }      }, 10)  }

二、將文本復制到剪貼板

構建網站時一個非常普遍的需求是能夠通過單擊按鈕將文本復制到剪貼板。以下這段代碼是一個很通用的代碼,適合大多數瀏覽器。wZJ28資訊網——每日最新資訊28at.com

const copyText = (text) => {        const clipboardStr = window.clipboardStr        if (clipboardStr) {          clipboardStr.clearData()          clipboardStr.setData('Text', text)          return true        } else if (document.execCommand) {            //Note: document, execCommand is deprecated but some browsers still support it. Remember to check the compatibility when using it          // Get the content to be copied by creating a dom element          const el = document.createElement('textarea')          el.value = text          el.setAttribute('readonly', '')          el.style.position = 'absolute'          el.style.left = '-9999px'          document.body.appendChild(el)          el.select()          // Copy the current content to the clipboard          document.execCommand('copy')          // delete el node          document.body.removeChild(el)          return true        }        return false    }

三、防抖/節流

在前端開發的過程中,我們會遇到很多按鈕被頻繁點擊,然后觸發多個事件,但是我們又不想觸發事件太頻繁。這里有兩種常見的解決方案來防止 Debouncing 和 Throttling。wZJ28資訊網——每日最新資訊28at.com

基本介紹

防抖:在指定時間內頻繁觸發事件,以最后一次觸發為準。wZJ28資訊網——每日最新資訊28at.com

節流:一個事件在指定時間內被頻繁觸發,并且只會被觸發一次,以第一次為準。wZJ28資訊網——每日最新資訊28at.com

應用場景

防抖: 輸入搜索,當用戶不斷輸入內容時,使用防抖來減少請求次數,節省請求資源。wZJ28資訊網——每日最新資訊28at.com

節流:場景一般是按鈕點擊。一秒內點擊 10 次將發起 10 個請求。節流后,1秒內點擊多次,只會觸發一次。wZJ28資訊網——每日最新資訊28at.com

// Debouncing    // fn is the function that needs anti-shake, delay is the timer time    function debounce(fn,delay){        let timer = null;        return function () {             //if the timer exists, clear the timer and restart the timer            if(timer){                clearTimeout(timeout);            }            //Set a timer and execute the actual function to be executed after a specified time            timeout = setTimeout(() => {               fn.apply(this);            }, delay);        }    }        // Throttling    function throttle(fn) {      let timer = null; // First set a variable, when the timer is not executed, the default is null      return function () {        if (timer) return; // When the timer is not executed, the timer is always false, and there is no need to execute it later        timer = setTimeout(() => {          fn.apply(this, arguments);           // Finally, set the flag to true after setTimeout is executed           // Indicates that the next cycle can be executed.          timer = null;        }, 1000);      };    }

四、初始化數組

fill() :這是 ES6 中的一個新方法。用指定的元素填充數組,實際上就是用默認的內容初始化數組。wZJ28資訊網——每日最新資訊28at.com

const arrList = Array(6).fill()   console.log(arrList)  // result:  ['','','','','','']

五、檢查它是否是一個函數

檢測是否是函數 其實寫完后直接寫isFunction就好了,這樣可以避免重復寫判斷。wZJ28資訊網——每日最新資訊28at.com

const isFunction = (obj) => {        return typeof obj === "function" &&          typeof obj.nodeType !== "number" &&           typeof obj.item !== "function";

六、檢查它是否是一個安全數組

檢查它是否是一個安全數組,如果不是,用 isArray 方法在這里返回一個空數組。wZJ28資訊網——每日最新資訊28at.com

const safeArray = (array) => {    return Array.isArray(array) ? array : []}

七、檢查對象是否是安全對象

// Check whether the current object is a valid object.    const isVaildObject = (obj) => {        return typeof obj === 'object' &&           !Array.isArray(obj) && Object.keys(obj).length    }    const safeObject = obj => isVaildObject(obj) ? obj : {}

八、過濾特殊字符

js中使用正則表達式過濾特殊字符,檢查所有輸入字段是否包含特殊字符。wZJ28資訊網——每日最新資訊28at.com

function filterCharacter(str){        let pattern = new RegExp("[`~!@#$^&*()=:”“'。,、?|{}':;'%,//[//].<>/?~!@#¥……&*()&;—|{ }【】‘;]")        let resultStr = "";        for (let i = 0; i < str.length; i++) {            resultStr = resultStr + str.substr(i, 1).replace(pattern, '');        }        return resultStr;    }          filterCharacter('gyaskjdhy12316789#$%^&!@#1=123,./[') // result: gyaskjdhy123167891123

結束

今天的分享就到這里,這8個方法你學會了嗎,我強烈建議大家收藏起來,別再造輪子了。希望今天的分享能夠幫助到你,感謝你的閱讀。wZJ28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-57908-0.htmlJS小知識,分享工作中常用的八個封裝函數,讓你事半功倍

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 生產級K8S監控告警方案分享給你

下一篇: 九條微服務最佳實踐,你學會了哪條?

標簽:
  • 熱門焦點
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據今天鴻蒙OS 4.0的現場演示顯示,華為的實況窗可以更高效的展現出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網課,網課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業又有了新的發展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 石頭自清潔掃拖機器人G10S評測:多年黑科技集大成之作 懶人終極福音

    科技圈經常能看到一個詞叫“縫合怪”,用來形容那些把好多功能或者外觀結合在一起的產品,通常這樣的詞是貶義詞,但如果真的是產品縫合的好、縫合的實用的話,那它就成了中性詞,今
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 2023年,我眼中的字節跳動

    此時此刻(2023年7月),字節跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的&ldquo;頭騰
  • 2299元起!iQOO Pad明晚首銷:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發布會,除了首發安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發布會上推出了旗下首款平板電腦——iQOO Pad,其最大的賣點
  • Meta盲目擴張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創意日前,Meta創始人兼CEO 馬克&middot;扎克伯發布公開信,宣布Meta計劃裁員超11000人,占其員工總數13%。他公開承認了自己的預判失誤:&ldquo;不僅
Top 主站蜘蛛池模板: 鸡西市| 井冈山市| 苏尼特左旗| 新源县| 泸西县| 江陵县| 保靖县| 修水县| 油尖旺区| 若羌县| 永福县| 蒲城县| 庆元县| 麟游县| 青田县| 工布江达县| 新化县| 清河县| 绍兴市| 宁阳县| 平远县| 苍溪县| 安宁市| 饶阳县| 阿拉善盟| 武鸣县| 五大连池市| 若羌县| 石门县| 建阳市| 枣阳市| 鄂伦春自治旗| 曲麻莱县| 手机| 大埔县| 神农架林区| 上杭县| 日喀则市| 金坛市| 施秉县| 永新县|