call和apply的this指向問題
阿新 • • 發佈:2019-01-28
call( )方法和apply( )方法用法:
.call( this指向,引數 )
.apply( this指向,引數陣列 )
注意:
這裡的this指向必須是引用型別。
如果this被強行改變為值型別,那麼能夠轉為對應包裝型別的都會轉,不能轉的 指向window
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 定義函式 var fun = function() { console.log(this); } // 強行使用call或者apply 將fun中的this指向值型別 var arr = [1, "1", false, null, undefined]; for(var i = 0; i < arr.length; i++) { // fun.call(arr[i]); fun.apply(arr[i]); } // this必須是引用型別 如果this被強行改變為值型別那麼能夠轉為對應包裝型別的都會轉 // 如果不能轉的 指向window </script> </body> </html>
輸出結果:
this指向數字值型別 相當於指向new Number( 數字值 )
this指向字串值型別 相當於指向new String( 字串值 )
this指向布林值型別 相當於指向new Boolean( 布林值 )
this指向null 或者 undefined 相當於指向window物件