this的作用域:apply,call,bind##
<strong>apply方法</strong>
fun.apply(thisArg,[argsArray]):在指定對象的作用域上調用函數,函數參數以數組形式提供,該方法實際上等于設置函數體內this對象值,即:this的作用域。
參數:thisArg要在其中運行函數的作用域、方法的綁定對象。即:要把函數體內的this指到哪個對象上。
參數:argsArray綁定對象的參數數組。該參可以是一個Array對象實例,也可以是一個arguments對象。
<strong>call方法</strong>
.fun.call(thisArg,[arg1,[arg2,[...]]]):在指定對象上作用域上調用函數,該方法實際上等于設置函數體內的this對象的值,即:this的作用域,該方法與apply方法作用相同,只是在參數接收方式上有所區別。對于call,第一個方法是this關鍵字或對象名沒有變化,其余參數都是直接傳遞給函數,這與apply按數組方式傳遞參數有所不同。
參數:thisArg一定要在其中運行函數的作用域,方法的綁定對象。即:要把函數體內的this指到哪個對象上。
參數:arg1,arg2,...綁定函數對象的參數列表。
<strong>bind方法</strong>
bind方法是ES5中新增的方法,該方法會創建一個函數實例,實例的this為傳遞到bind方法的值。
.fun.bind(thisArg[,arg1[,arg2][,...]]):創建一個函數實例,參數傳遞形式與call方法相同,實例的this作用域為bind方法中thisArg對象作用域。
參數:thisArg要在其中創建函數實例的作用域對象。即:函數實例this作用域對象。
參數:arg1,arg2,...創建函數實例的參數列表。