一些面試經常考的js功能函式筆記(不一定對)

2022-09-08 05:00:10 字數 3529 閱讀 9426

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 }

67

68//

陣列扁平化

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...