面試題js之 bind call apply

2022-09-20 20:00:10 字數 765 閱讀 7621

共同點:都是改變this的指向

區別

bind

call

第乙個引數是this要指向的物件,多個引數 型別不限

第乙個引數是this要指向的物件,多個引數 型別不限

第乙個引數是this要指向的物件,第二個引數是陣列

bind()改過this後,不執行函式,會返回乙個繫結新this的函式

call()改過this的指向後,會再執行函式

改過this的指向後,會再執行函式

實際用法:

bind

//react 的 constructor中 改變指定的事件的this指向

constructor(props)

clickhande()

}

call

//利用call()判斷資料型別

//在判斷資料類形式使用typeof,一般不是太準確的,我們可以使用object.prototype.tostring.call()方法來判斷乙個資料的資料型別

console.log(object.prototype.tostring.call("qq")) // [object string] 返回值都是字串型別****

var arr =[2,6,8,3,4,9,7,23,56,889]

參考:

js變數面試題

全域性作用域和區域性作用域 全域性作用域 整個js執行環境 區域性作用域 通過建立乙個函式就開闢出了乙個區域性作用域 全域性變數和 區域性變數 全域性變數 在全域性作用域都可以訪問的變數 區域性變數 只能在當前區域性作用域訪問的 變數宣告提公升 如果變數宣告在函式裡面,則將變數宣告提公升到函式的開頭...

前端JS面試題

在引數過多的時候,call 的效能會好一些 console.time 可以測試一段程式執行的時間 console.timeend 假設 arr 是乙個陣列,它之所以可以呼叫 arr.push 這個方法式因為 它是array的例項,可以繼續呼叫array原型上面的 push 方法 function f...

js函式面試題

一var name the window var object alert object.getnamefunc 題中有兩個alert輸出,我們首先看第乙個alert,這個alert所在的函式是在最後乙個alert裡面被呼叫的,呼叫的時候,裡面的this指向的是object,所以是在object裡面...