<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          18 個基本 JavaScript 方法代碼片段

          共 8993字,需瀏覽 18分鐘

           ·

          2024-06-19 20:15


          在我們的日常開發(fā)過程中,我們經(jīng)常使用許多常見的 JavaScript 代碼片段,例如復(fù)制內(nèi)容或從 URL 中檢索特定參數(shù)。

          這些代碼片段都有固定的實現(xiàn),方便開發(fā),今天我們來了解一下7個常用的代碼片段。

          01、函數(shù)節(jié)流

          /** Function throttling timer version */function throttle(callback: Function, delay: number) {   let timer: number | null   return function () {     if (timer) return     const args = arguments //Use closure to save parameter array     timer = setTimeout(() => {       callback.apply(null, args)       timer = null     }, delay)   }}

          02、URL 解碼和編碼

          /** Encode URL */function encodeURL(url: string, isComponent = true): string {   return isComponent ? encodeURIComponent(url) : encodeURI(url)}
          /** Decode URL */function decodeURL(url: string, isComponent = true): string { return isComponent ? decodeURIComponent(url) : decodeURI(url)}

          03、使用JavaScript 獲取全局 CSS 變量

          /** * @description Use JS to get global css variables * @param cssVariableName variable name * @returns {string} variable value*/function getCssVariableValue(cssVariableName: string): string {   return getComputedStyle(document.documentElement).getPropertyValue(cssVariableName)}

          04、使用 JS 設(shè)置全局 CSS 變量

          /**  * @description Set global CSS variables with JS  * @param {string} cssVariableName variable name  * @param {string} cssVariableValue variable value  */function setCssVariableValue(cssVariableName: string, cssVariableValue: string): void {   document.documentElement.style.setProperty(cssVariableName, cssVariableValue)}

          05、清除所有 cookies 

          /** * @description clear all cookies */function clearCookie(): void {   const keyList = document.cookie.match(/[^ =;]+(?=\=)/g) as string[] | null   keyList && keyList.forEach(key => (document.cookie = `${key}=0;path=/;expires=${new Date(0).toUTCString()}`))}

          06、清除所有項目緩存

          /** * @description Clear all project caches */function clearCache(): void {  window.localStorage.clear()  window.sessionStorage.clear()  const keyList = document.cookie.match(/[^ =;]+(?=\=)/g) as string[] | null  keyList && keyList.forEach(key => (document.cookie = `${key}=0;path=/;expires=${new Date(0).toUTCString()}`))}

          07、通過名稱獲取 URL 查詢參數(shù) 

          /**  * @description Get URL query parameters by name  * @param {string} key The key of the query parameter that needs to be obtained  * @param {string} url The link that needs to be parsed, the default is window.location.href  * @returns {string | null} obtained value corresponding to key  */function getQueryByName(key, url = window.location.href) {   const queryNameRegExp = new RegExp(`[?&]${key}=([^&]*)(?:&|$)`)   const queryNameMatch = url.match(queryNameRegExp)   return queryNameMatch ? decodeURIComponent(queryNameMatch[1]) : null}

          08、登錄頁面時間前綴

          /**  * @description time prefix of login page  * @returns {string} time prefix  */function timeFix(): string {   const time = new Date()   const hour = time.getHours()   return hour < 9 ? 'Good morning' : hour <= 11 ? 'Good morning' : hour <= 13 ? 'Good afternoon' : hour < 20 ? 'Good afternoon' : 'Good evening'}

          09、登錄頁面上的歡迎信息

          /**  * @description Welcome message on the login page  * @returns {string} random welcome message  */function welcome(): string {   const list = ['Long time no see, I miss you so much! ', 'Wait until the stars go to sleep before I miss you', 'We are open today']   return list[Math.floor(Math.random() * list.length)]}

          10、遞歸深層復(fù)制

          /**  * @description Make a deep copy of the incoming data and return it  * @param {any} source data source  * @returns {any} copied data  */function deepClone(source: any): any {   if (!source || typeof source !== 'object') return source   if (source instanceof Date) return new Date(source)   if (source instanceof RegExp) return new RegExp(source)   const target = Array.isArray(source) ? ([] as Record<any, any>) : ({} as Record<any, any>)   for (const key in source) target[key] = typeof source[key] === 'object' ? deepClone(source[key]) : source[key]   return target}

          11、隨機(jī)生成一個 UUID 

          /**  * @description Randomly generate a UUID  * @returns {string} generated uuid  */function getRandomUUID(): string {   const tempURL = URL.createObjectURL(new Blob())   const uuidStr = tempURL.toString()   const separator = uuidStr.includes('/') ? '/' : ':'   URL.revokeObjectURL(tempURL)   return uuidStr.substring(uuidStr.lastIndexOf(separator) + 1)}
          function getRandomUUID(): string { const fn = (): string => (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) return fn() + fn() + '-' + fn() + '-' + fn() + '-' + fn() + '-' + fn() + fn() + fn()}

          12、隨機(jī)布爾值

          /**  * @description random boolean value  * @returns {boolean} true | false  */function getRandomBoolean(): boolean {   return Math.random() > 0.5}

          13、反轉(zhuǎn)字符串

          /**  * @description reverse string  * @param {string} str string  * @returns {string} reversed string  */function reverseString(str: string): string {   return str.split('').reverse().join('')}

          14、隨機(jī)生成十六進(jìn)制顏色

          /**  * @description Randomly generates a color string in Hex format  * @returns {string} Color string in Hex format  */function getRandomHexColor(): string {   return `#${Math.floor(Math.random() * 0xffffff).toString(16)}`}

          15、獲取變量的真實類型

          /**  * @description Get the real type of the variable  * @param {any} variable variable of any type  * @returns {string} variable type  */function getRawType(variable: any): string {   return Object.prototype.toString.call(variable).split(' ')[1].replace(']', '').toLowerCase()}

          16、將文本復(fù)制到剪貼板

          /**  * @description Copy text to clipboard  * @param {string} text The copied text  */function copyText(text: string): void {   // Whether to support navigator.clipboard attribute   const isClipboardApiSupported = window.navigator && window.navigator.clipboard   if (isClipboardApiSupported) {     window.navigator.clipboard.writeText(text)   } else {     const textarea = document.createElement('textarea')     textarea.readOnly = true     textarea.value = text     textarea.style.position = 'absolute'     textarea.style.top = '-9999px'     textarea.style.left = '-9999px'     document.body.appendChild(textarea)     textarea.select()     document.execCommand('copy')     textarea.remove()   }}

          17、滾動到頂部

          /**  * @description scroll to top  */function scrollToTop(element: HTMLElement): void {   element.scrollIntoView({ behavior: 'smooth', block: 'start' })}

          18、對象通用方法

          const obj = { a: 1, b: 2, c: 3, d: 4 }//Object.keys()// Will return an array consisting of the given object's own enumerable propertiesObject.keys(obj) // ['a', 'b', 'c', 'd']//Object.values()// Returns an array of all enumerable property values of the given object itselfObject.values(obj) // [1, 2, 3, 4]//Object.entries()// Returns an array of key-value pairs for the given object's own enumerable propertiesObject.entries(obj) // [['a', 1], ['b', 2], ['c', 3], ['d', 4]]//Object.fromEntries()//Convert the list of key-value pairs into an object, which is the reverse operation of Object.entries()Object.fromEntries( [['a', 1], ['b', 2]]) // { a: 1, b: 2 }// hasOwnProperty()// Returns a Boolean value indicating whether the object has the specified attribute in its own properties (that is, whether it has the specified key)obj.hasOwnProperty('a') // trueobj.hasOwnProperty('fff') // false//Object.assign()// Used to copy the values of all enumerable properties from one or more source objects to the target object. It will return the target object.const target = { a: 1, b: 2 }const source = { b: 4, c: 5 }const result = Object.assign(target, source) // { ...target, ...source } has the same effectconsole.log(result) // {a: 1, b: 4, c: 5}

          總結(jié)

          以上就是我今天想與你分享的全部內(nèi)容,希望這些內(nèi)容對你有所幫助。

          最后,感謝你的閱讀,祝編程愉快!





          學(xué)習(xí)更多技能

          請點擊下方公眾號



          瀏覽 128
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无码一本道 | 成人三级在线观看 | 久久一区| 少妇做爰18P极品少妇 | 99超碰在线网 |