前端面試問題及答案整理

2021-10-23 21:49:14 字數 1462 閱讀 4623

手寫乙個call方法

// 在這之前需要重新認識一下call方法的執行操作

let mock = ;

function mocknum()

mocknum.call(mock) // 改變了函式中this的指向,當前this指向了mock物件

// 轉換一下實現方法就是

let mock =

}mock.mocknum();

// 所以經過上面這個操作的演化而來的結果就是如下步驟:

// 1. 將函式設為乙個物件的屬性

// 2. 並將這個函式的屬性呼叫

// 3. 刪除該函式

function.prototype.mycall = function(context)

// 操作一下

let mock = ;

function mocknum()

mocknum.mycall(mock) // value 1

2、bind

bind方法是直接返回乙個新的函式,需要手動去呼叫才能執行。

手寫乙個bind方法

// 例如:

let foo = ;

function bar()

let bindfoo = bar.bind(foo);

bindfoo() // 1 // 如果有返回值的情況下 bindfoo() === 1;

function.prototype.mybind = function(obj)

}}

3、講一下let、var、const的區別

4、手寫函式防抖與節流

防抖

function debounce(fn, wait, immediate) 

// settimeout中使用箭頭函式,就是讓 this指向 返回的該閉包函式,而不是 debounce函式的呼叫者

timer = settimeout(() => , wait)

}}

節流

function throttle(fn, wait)  , wait)}}

}

5、js跨域如何解決

目前暫時已知的跨域方法是:

6、script標籤如何實現非同步載入

另外值得注意的就是:deger指令碼會按照在頁面出現的順序載入,而async是不能保證載入順序的。

7、手寫js深拷貝

export const deepclone = data =>  else if (type === 'object') 

} else

if (type === 'array')

} else if (type === 'object')

} return obj

}

持續更新中,敬請期待…

前端面試問題

1 對mvc的理解 簡單來說,mvc是一種流行的程式架構。mvc是 模型 model 檢視 view 控制器 control 的英文首字母的縮寫,核心思想是 檢視和使用者互動 通過事件導致控制器改變 控制器改變導致模型改變 或者控制器同時改變兩者 模型改變 導致檢視改變 或者檢視改變 潛在的從模型裡...

前端 面試問題

二.傳輸方式的分類 三.分組交換協議 四.tcp ip 參考模型。五.get 和 post 的區別 六.webpack 作業系統通過時間片輪轉機制,在多個程式之間進行切換,合理排程。這種方式叫做多任務排程。1.1分組交換協議 分組交換就是將大資料分裝成乙個個小包發給對方。1.2 各個分層的作用 傳輸...

前端面試問題(持續整理中。。。)

ajax流程講一下 了解promise嗎,簡單說一下 手寫乙個箭頭函式如何使用 實現乙個鏈式呼叫 寫個簡單的觀察者模式 陣列去重 let和const有什麼區別 如何判斷資料型別,如果遇到null呢 寫乙個正則,要求匹配 號區號 座機號,並且給區號新增上括號 mvc,mvp和mvvm的區別 筆試題to...