1//防抖 經過一定的延遲執行一次 接受乙個函式 返回防抖的函式
2function
debounce(fn,delay),delay) 13}
14}1516
var test = document.getelementbyid('test')
17var hello = '456'
18 test.name = '123'
19var hh = throttle(function
(),2000,hello)
2223 test.onclick =hh
2425
26//
節流27
function
throttle(fn,delay),delay) 38}
3940}41
}4243//
var a = b.bind()
44//
bind的模擬實現
1 function.prototype._bind = function(context)else12}
1314
var _fonp = function
(){};
15 _fonp.prototype = this
.prototype
16 _fun.prototype = new
_fonp()
17return
_fun
1819 }
6768//
陣列扁平化
69function
flattern(array)else
78})
7980
return
_returnarray
8182}83
84 console.log(flattern([1,2,[3,4,[5,6,7]],[8,9,[10,[11,12[13,14]]]]]))
1//深拷貝
2function
deepcopy(object)67
var _returnobject = array.isarray(object) ? : {}89
10if(!isobject(object))
13//
遍歷物件
14for(var key in
object)else
if(isobject( object[key] ))
23else26}
27}28return
_returnobject29}
30var test = [null,2,[3,undefined,5,[1]],,'123',function(),false]31
var testobject =deepcopy(test)
32 test[1] = 'test'
33 test[2][0] = 'test'
34 test[2][3].push('test')
35 test[3].key = 'test'
36 test[5] = '1111'
37 console.log(testobject);
1//函式柯麗化 用閉包把引數儲存起來,當引數的數量足夠執行函式了,就開始執行函式
2function
curry(fn,setarray)else15}
16}1718
var _testcurry = curry(function
(a,b,c,d,f,g))
2122 _testcurry(1)(1)(2)(3,4,5,6,7);
1//實現乙個eventemitter
2class eventemitter 78
addlistners(type,cb)個監聽事件限制啦`);
11this._events[type] = this._events[type] ? [...this
._events[type],cb] : [cb]
1213}14
emitevents(type,...args))19}
20}21//
監聽一次 只觸發一次就要刪除
22once(type,cb)
30this
.addlistners(type,oncelistners)31}
32removelistner(type,cb)
39this._events[type] = this._events[type].reduce((prev,cur) =>
4344
return
prev
45},);
4647}48
}49//設定最大監聽數
50 setmaxlistners(n = 10)
53 static getinstance(maxlength = 10)else60}
61}62 const _fn = function
(data)
65 const _test = eventemitter.getinstance(3);
66 _test.addlistners('hhh',function
(data))
69 _test.once('hhh1',_fn)
70 _test.addlistners('hhh',(data)=>)
73 _test.emitevents('hhh',123);
7475 _test.emitevents('hhh1',123);
lazyman
1//lazyman23
class lazyman`)
10this
.next()11}
12this
.task.push(consolename);
13 settimeout(() =>,0)
1718}19
sleep(time) sleep $ alearady`);
25this
.next()
26 },time*1000);27}
2829
this
.task.push(_sleep);
30return
this31}
32eat(data)eat$`);
35this
.next()36}
37this
.task.push(_eat);
38return
this39}
40next()47}
4849 let man = new lazyman('wuhr')
50 man.sleep(0.5).eat('fan').sleep(4).eat('zhopu');
Opencv 一些函式筆記
shape 有一張寬度 高度是300 100,用opencv的img.shape返回的是 100,300,3 shape返回的是影象的行數,列數,色彩通道數。易錯的地方 行數其實對應於座標軸上的y,即表示的是影象的高度 列數對應於座標軸上的x,即表示的是影象的寬度 也就是說shape返回的是 高度,...
一些函式要記的函式筆記 一些玄學操作
std ios sync with stdio false cin.tie 0 cout.tie 0 int n 15 二進位制為1111 二進位制1的個數 cout builtin popcount n typedef long long ll const int maxn 1e3 5 int k...
經常用到的一些函式
1.對話方塊函式 showmessage 用於在程式執行過程中顯示乙個包含乙個字串資訊的對話方塊,使用者只有對這個對話方塊準確響應後才能關閉對話方塊,進行下一步工作。語法結構 showmessage const msg string showmessage hello delphi messaged...