作者:Sunshine_Lin
簡介:「前端之神」的號主江湖人稱林三心,現已有100+篇原創文章,全網粉絲高達1w+,面試過超過100+個前端程式設計師,全網獲贊2w+,全網閱讀量播放量超過60w,更是B站「面試進階成為大佬」系列影片的Up主。喜歡分享Vue,React,Typescript等高階前端知識。
前言
大家好,我是林三心,基礎是進階的前提,前面我給大家分享了本菜鳥這一年來筆記中的50個JS基礎知識點和50個JS高階知識點
工作中遇到的50個JavaScript的基礎知識點,滿分找我拿獎品!
https://juejin。cn/post/7020940475133591566
萬字總結」熬夜總結50個JS的高階知識點,全都會你就是神!
https://juejin。cn/post/7022795467821940773
今天就給大家分享一下我筆記中的
56個JavaScript手寫知識點
註明:此文章不含演算法題
面試常考
1、實現原生的AJAX請求
2、手寫 new 的過程
3、instanceof關鍵字
4、實現防抖函式
5、實現節流函式
6、實現陣列去重
題目描述:實現一個數組的去重
7、用setTimeout實現setInterval
題目描述:setinterval 用來實現迴圈定時呼叫 可能會存在一定的問題 能用 settimeout 解決嗎
8、用setInterval實現setTimeout
題目說明:沒有,就是想刁難你
9、實現一個compose函式
題目說明:實現以下效果
實現如下:
10、實現一個科裡化函式
題目要求:
實現如下:
11、實現一個LRU快取函式
題目說明:
實現如下:
12、簡單實現 釋出訂閱模式
題目描述:實現一個釋出訂閱模式擁有 on emit once off 方法
13、實現JSON。parse
題目描述:實現JSON。parse
14、將DOM轉化成樹結構物件
題目描述:
實現如下:
15、將樹結構轉換為DOM
題目描述:
實現如下:
16、判斷一個物件有環引用
題目描述:驗證一個物件有無環引用
實現思路:用一個數組儲存每一個遍歷過的物件,下次找到陣列中存在,則說明環引用
17、計算一個物件的層數
題目描述:給你一個物件,統計一下它的層數
18、物件的扁平化
題目描述:
實現如下:
19、實現(a == 1 && a == 2 && a == 3)為true
題目描述: 實現(a == 1 && a == 2 && a == 3)為true
20、實現限制併發的Promise排程器
題目描述:JS 實現一個帶併發限制的非同步排程器 Scheduler,保證同時執行的任務最多有兩個
實現如下:
21、實現lazyMan函式
題目描述:
實現如下:
22、實現add函式
題目描述:實現一個 add 方法 使計算結果能夠滿足如下預期:
add(1)(2)(3)()=6
add(1,2,3)(4)()=10
23、實現一個合格的深複製
推薦看我這篇:深複製有這5個段位,你只是青銅段位?還想漲薪?
24、實現 Promise
推薦看我這篇:看了就會,手寫Promise原理,最通俗易懂的版本!!!【閱讀:1。3w,點贊:460】
25、實現 async/await
推薦看我這篇:7張圖,20分鐘就能搞定的async/await原理!為什麼要拖那麼久?【閱讀:2。15w,點贊:460】
Array篇
定義一個測試陣列
26、forEach
引數代表含義
item:遍歷項
index:遍歷項的索引
arr:陣列本身
27、map
引數代表含義
item:遍歷項
index:遍歷項的索引
arr:陣列本身
28、filter
引數代表含義
item:遍歷項
index:遍歷項的索引
arr:陣列本身
29、every
引數代表含義
item:遍歷項
index:遍歷項的索引
arr:陣列本身
30、some
引數代表含義
item:遍歷項
index:遍歷項的索引
arr:陣列本身
31、reduce
引數代表含義
pre:前一項
next:下一項
index:當前索引
arr:陣列本身
32、findIndex
引數代表含義
item:遍歷項
index:遍歷項的索引
arr:陣列本身
33、find
引數代表含義
item:遍歷項
index:遍歷項的索引
arr:陣列本身
34、fill
用處:填充陣列
引數代表含義
initValue:填充的值
start:開始填充索引,預設0
end:結束填充索引,預設length
35、includes
用處:查詢元素,查到返回true,反之返回false,可查詢NaN
36、join
用處:將陣列用分隔符拼成字串,分隔符預設為,
37、flat
38、splice
難點
擷取長度和替換長度的比較,不同情況
Object篇
定義一個測試物件
39、entries
用處:將物件轉成鍵值對陣列
40、fromEntries
用處:跟entries相反,將鍵值對陣列轉成物件
41、keys
用處:將物件的key轉成一個數組合集
42、values
用處:將物件的所有值轉成數組合集
43、instanceOf
用處:A instanceOf B,判斷A是否經過B的原型鏈
44、is
用處:Object。is(a, b),判斷a是否等於b
45、Object。assign
難點
assign接收多個物件,並將多個物件合成一個物件
這些物件如果有重名屬性,以後來的物件屬性值為準
assign返回一個物件,這個物件 === 第一個物件
Function篇
46、call
47、apply
難點:
bind是返回一個函式,而不是執行結果
bind返回的函式,拿來當做建構函式,該怎麼處理
String篇
49、slice
引數代表含義
start:開始擷取的字元索引(包含此字元)
end:結束擷取的字元索引(不包含此字元)
注意點
start > end:返回空字串
start < 0:start = 陣列長度 + start
50、substr
引數代表含義
start:開始擷取的字元索引(包含此字元)
length:擷取的長度
注意點
start < 0:start = 陣列長度 + start
length超出所能擷取範圍,需要做處理
length < 0:返回空字串
51、substring
功能與slice大致相同
區別之處
start > end:互換值
Promise篇
52、all
接收一個Promise陣列,陣列中如有非Promise項,則此項當做成功
如果所有Promise都成功,則返回成功結果陣列
如果有一個Promise失敗,則返回這個失敗結果
53、race
接收一個Promise陣列,陣列中如有非Promise項,則此項當做成功
哪個Promise最快得到結果,就返回那個結果,無論成功失敗
54、allSettled
接收一個Promise陣列,陣列中如有非Promise項,則此項當做成功
把每一個Promise的結果,集合成陣列,返回
55、any
any與all相反
接收一個Promise陣列,陣列中如有非Promise項,則此項當做成功
如果有一個Promise成功,則返回這個成功結果
如果所有Promise都失敗,則報錯
56、finally
接收一個回撥函式,但無引數接收
無論成功失敗狀態,都會執行finally
結語
如果你覺得此文對你有一丁點幫助,點個贊,鼓勵一下林三心哈哈。