成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

test

glumes / 946人閱讀

摘要:防抖多次觸發(fā)事件后,事件處理函數(shù)只執(zhí)行一次,并且是在觸發(fā)操作結(jié)束時(shí)執(zhí)行。

防抖:多次觸發(fā)事件后,事件處理函數(shù)只執(zhí)行一次,并且是在觸發(fā)操作結(jié)束時(shí)執(zhí)行。
    function debounce(fn) {
      // 4、創(chuàng)建一個(gè)標(biāo)記用來(lái)存放定時(shí)器的返回值
      let timeout = null;
      return function() {除
        clearTimeout(timeout);
        var args = arguments;
        timeout = setTimeout(() => {
          fn.apply(this, args);
        }, 1000);
      };
    }
    sayDebounce(){
     console.log("防抖成功!");
    }
    btn.addEventListener("click", debounce(sayDebounce));
節(jié)流: 觸發(fā)函數(shù)事件后,短時(shí)間間隔內(nèi)無(wú)法連續(xù)調(diào)用,只有上一次函數(shù)執(zhí)行后,過(guò)了規(guī)定的時(shí)間間隔,才能進(jìn)行下一次的函數(shù)調(diào)用
    var throttle = function(func, delay) {
        var prev = Date.now();
        return function() {
            var context = this;
            var args = arguments;
            var now = Date.now();
            if (now - prev >= delay) {
                func.apply(context, args);
                prev = Date.now();
            }
        }
    }
    function handle() {
        console.log(Math.random());
    }
    window.addEventListener("scroll", throttle(handle, 1000));
    // 處理函數(shù)
    function handle() {
        console.log(Math.random()); 
    }
    // 滾動(dòng)事件
    window.addEventListener("scroll", debounce(handle, 1000));
js 實(shí)現(xiàn)once 方法
function runOnce(fn, context) { //控制讓函數(shù)只觸發(fā)一次
  return function () {
    try {
      fn.apply(context || this, arguments);
    }
    catch (e) {
      console.error(e);//一般可以注釋掉這行
    }
    finally {
      fn = null;
    }
  }
}
var obj = {name: "狗子", age: 24};
var canOnlyFireOnce = runOnce(function () {
  console.log("你好" + this.name);
}, obj);
canOnlyFireOnce(); //你好天涯孤雁
canOnlyFireOnce(); // nothing
實(shí)現(xiàn)bind 或者 call
Function.prototype.bind= function(obj){
    var _self = this, args = arguments;
    return function() {
        _self.apply(obj, Array.prototype.slice.call(args, 1));
    }
}
Function.protype.call = function(context){
    context = context || window
    context.fn = this;
    const args = [...arguments].slice(1);
    const result = context.fn(...args);
    delete context.fn
    return result;
}
reduce實(shí)現(xiàn)map
    const reduceMap = (fn, thisArg /*真想去掉thisArg這個(gè)參數(shù)*/ ) => {
        return (list) => {
            // 不怎么愿意寫下面這兩個(gè)判斷條件
            if (typeof fn !== "function") {
                throw new TypeError(fn + "is not a function")  
            }
            if (!Array.isArray(list)) {
                throw new TypeError("list must be a Array")
            }
            if (list.length === 0) return []
            return list.reduce((acc, value, index) => {
                return acc.concat([ fn.call(thisArg, value, index, list) ])
            }, [])
        }
    }
    // 來(lái)使用下怎么樣           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109439.html

相關(guān)文章

  • K8S client-go Patch example

    摘要:所以使用記住要把原始的數(shù)據(jù)取出來(lái)和你要新增的數(shù)據(jù)合并后再提交,如單元測(cè)試如各位還有其他更好的方式,歡迎交流補(bǔ)充。 使用Patch方式更新K8S的 API Objects 一共有三種方式:strategic merge patch, json-patch,json merge patch。關(guān)于這三種方式的文字描述區(qū)別可看官方文檔update-api-object-kubectl-patc...

    null1145 評(píng)論0 收藏0
  • script關(guān)于async與defer屬性的測(cè)試

    摘要:環(huán)境其它版本沒(méi)有測(cè)試,下列簡(jiǎn)稱和分別延遲秒秒和立即,并會(huì)在控制臺(tái)里打印和測(cè)試代碼做測(cè)試步驟不為設(shè)定或時(shí)頁(yè)面會(huì)在所有加載和執(zhí)行完后渲染輸出和設(shè)置為會(huì)等的秒延遲后,控制臺(tái)會(huì)立即輸出和等的秒后會(huì)輸出并觸發(fā),最后觸發(fā)會(huì)等的秒延遲后,控制臺(tái)會(huì)立即 環(huán)境: chrome31/firefox25/IE11(其它版本沒(méi)有測(cè)試),下列簡(jiǎn)稱chrome/firefox/IE http://127.0....

    scola666 評(píng)論0 收藏0
  • Python 自定義函數(shù)的特殊屬性(收藏專用)

    Python 中通過(guò)函數(shù)定義所創(chuàng)建的用戶自定義函數(shù)對(duì)象均具有一些特殊屬性,需要注意的是這里介紹的是自定義函數(shù)(function類型)的特殊屬性,而非方法(method 類型)的特殊屬性,函數(shù)和方法的特熟屬性以及默認(rèn)的返回值可能不盡相同。 對(duì)于大多數(shù)特殊屬性,可以通過(guò)下面這個(gè)例子示范一下: class Test(): def func(self, v = dog): 這里演...

    zhou_you 評(píng)論0 收藏0
  • JS 變量聲明之變量提升和函數(shù)提升

    摘要:很多初學(xué)者弄不清變量提升和函數(shù)提升,整理寫幾個(gè)例子,分析一下,你很快搞明白怎么分析。精華放在最上面,兩個(gè)最基本的原則函數(shù)聲明優(yōu)先先聲明,后賦值,聲明和賦值是分開的。 很多初學(xué)者弄不清變量提升和函數(shù)提升,整理寫幾個(gè)例子,分析一下,你很快搞明白怎么分析。精華放在最上面,兩個(gè)最基本的原則: 函數(shù)聲明優(yōu)先 先聲明,后賦值,聲明和賦值是分開的。 讓我們看幾個(gè)例子并解釋下 先看這個(gè)例子: va...

    honhon 評(píng)論0 收藏0
  • Python裝飾器:python真正入門的鑒定標(biāo)準(zhǔn)

    上一篇文章:Python是動(dòng)態(tài)語(yǔ)言:動(dòng)態(tài)添加或刪除屬性、方法下一篇文章:私有化規(guī)則與屬性Property 裝飾器功能: 引入日志 函數(shù)執(zhí)行時(shí)間統(tǒng)計(jì) 執(zhí)行函數(shù)前預(yù)備處理 執(zhí)行函數(shù)后清理功能 權(quán)限校驗(yàn) 緩存 1、無(wú)參數(shù)函數(shù)的裝飾器 實(shí)例: from time import ctime,sleep def time_fun(func): #內(nèi)部包裹函數(shù) def wrapped_...

    ranwu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<