1碳柱、call()
- 語(yǔ)法:.call(obj,arg1,arg2,....)
- obj:這個(gè)對(duì)象將代替Function里面的this對(duì)象
- args:這是一個(gè)參數(shù)列表
- 可以有多個(gè)參數(shù), 第二個(gè)參數(shù)及第二個(gè)參數(shù)之后可以傳入任何類型
例子1:
例子2:
例子3:
2燃领、apply()
- 只有兩個(gè)參數(shù)士聪, 第二個(gè)參數(shù)必須傳入一個(gè)數(shù)組
- 語(yǔ)法:apply(obj,array)
- obj:這個(gè)對(duì)象將代替Function里面的this對(duì)象
- args:這是一個(gè)數(shù)組,它將作為參數(shù)傳給Function(args--> arguments)
例子1:
例子2:
注意:如果call和apply的第一個(gè)參數(shù)寫(xiě)的是null猛蔽,那么this指向的是window對(duì)象
例子:
總結(jié):
- 每個(gè)函數(shù)都包含兩個(gè)非繼承而來(lái)的方法:call()方法和apply()方法剥悟。
- 相同點(diǎn):這兩個(gè)方法的作用是一樣的,都是在特定的作用域中調(diào)用函數(shù)曼库,等于設(shè)置函數(shù)體內(nèi)this對(duì)象的值区岗,以擴(kuò)充函數(shù)賴以運(yùn)行的作用域。
- 一般來(lái)說(shuō)毁枯,this總是指向調(diào)用的某個(gè)方法的對(duì)象慈缔,但是使用call()和apply()方法時(shí),就會(huì)改變this的指向种玛。
3藐鹤、bind()
- bind()方法和call、apply方法有些不同赂韵,但是不管怎么說(shuō)它們都可以用來(lái)改變this的指向娱节。
- bind()方法返回的是一個(gè)修改過(guò)后的函數(shù)
例子:
- bind()方法也可以有多個(gè)參數(shù),并且參數(shù)可以執(zhí)行的時(shí)候再添加祭示,但是要注意的是肄满,參數(shù)是按照形參的順序進(jìn)行的
例子:
總結(jié):
call和apply都是改變上下文中的this并立即執(zhí)行這個(gè)函數(shù),bind方法可以讓對(duì)應(yīng)的函數(shù)想什么時(shí)候調(diào)用就什么時(shí)候調(diào)用质涛,并且可以將參數(shù)在執(zhí)行的時(shí)候添加稠歉,這是它們的區(qū)別,根據(jù)自己的實(shí)際情況來(lái)選擇使用汇陆。