摘要:是誰(shuí),在函數(shù)運(yùn)行時(shí)才能確定,誰(shuí)調(diào)用了函數(shù)誰(shuí)就是,就是調(diào)用者例如是是調(diào)用了函數(shù),所以函數(shù)中的就是調(diào)用者是同理什么是全局對(duì)象,瀏覽器的全局對(duì)象是,中全局對(duì)象是在瀏覽器中直接調(diào)用一個(gè)函數(shù),那么就是調(diào)用者是例如是的作用,中函數(shù)是一個(gè)對(duì)象,所以函數(shù)可
this 是誰(shuí)
1,this 在函數(shù)運(yùn)行時(shí)才能確定
2,誰(shuí)調(diào)用了函數(shù)誰(shuí)就是 this
3,this 就是調(diào)用者
例如
var o1 = { name: "o1", } var o2 = { name: "o2", } o1.hello = function() { console.log("this 是,", this) } o2.hello = function() { console.log("this 是, ", this) } o1.hello() o2.hello()
o1 調(diào)用了 hello 函數(shù),所以 hello 函數(shù)中的 this 就是 o1(調(diào)用者是 o1
o2 同理
1,瀏覽器的全局對(duì)象是 window
2,node.js 中全局對(duì)象是 global
在瀏覽器中直接調(diào)用一個(gè)函數(shù),那么 this 就是 window (調(diào)用者是 window
例如
var hello = function() { console.log("this 是,", this) } hello()apply call bind 的作用
1,JavaScript 中函數(shù)是一個(gè)對(duì)象,所以函數(shù)可以有方法
2,apply call bind 都是函數(shù)的方法,用來(lái)給函數(shù)指定 this
1,apply 接受兩個(gè)參數(shù)
2,第一個(gè)參數(shù)為函數(shù)里的 this
3,第二個(gè)參數(shù)為要傳給函數(shù)的參數(shù)列表,(這個(gè)參數(shù)列表可以當(dāng)做是個(gè)數(shù)組來(lái)理解,實(shí)際上不是數(shù)組
4,apply 會(huì)把這個(gè)參數(shù)列表拆成一個(gè)個(gè)的參數(shù)傳給函數(shù)
例如
console.log.apply(console, arguments)
這行代碼把 log 函數(shù)的 this 指定為 cosnole.log
var arguments = [1, 2, 3] console.log.apply(console, arguments) // 相當(dāng)于 console.log(1, 2, 3)call
call 和 apply 類(lèi)似,區(qū)別是 call 只能把參數(shù)一個(gè)個(gè)傳入
例如
console.log.call(console, 1, 2, 3) // 相當(dāng)于 console.log(1, 2, 3)bind
1,bind 只能返回一個(gè)函數(shù)讓你調(diào)用
2,bind 的第一個(gè)參數(shù)為函數(shù)里的 this
3,bind 還可以有額外的參數(shù)
例如
var log = console.log.bind(console, "這里是額外參數(shù)") log("hello")
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/103149.html
摘要:理解文章中已經(jīng)比較全面的分析了在中的指向問(wèn)題,用一句話來(lái)總結(jié)就是的指向一定是在執(zhí)行時(shí)決定的,指向被調(diào)用函數(shù)的對(duì)象。與和直接執(zhí)行原函數(shù)不同的是,返回的是一個(gè)新函數(shù)。這個(gè)新函數(shù)包裹了原函數(shù),并且綁定了的指向?yàn)閭魅氲摹? 理解 JavaScript this 文章中已經(jīng)比較全面的分析了 this 在 JavaScript 中的指向問(wèn)題,用一句話來(lái)總結(jié)就是:this 的指向一定是在執(zhí)行時(shí)決定的,...
摘要:它們有明確的和成員函數(shù)的定義,只有的實(shí)例才能調(diào)用這個(gè)的成員函數(shù)。用和調(diào)用函數(shù)里用和來(lái)指定函數(shù)調(diào)用的,即指針的指向。同樣,對(duì)于一個(gè)后的函數(shù)使用或者,也無(wú)法改變它的執(zhí)行,原理和上面是一樣的。 函數(shù)里的this指針 要理解call,apply和bind,那得先知道JavaScript里的this指針。JavaScript里任何函數(shù)的執(zhí)行都有一個(gè)上下文(context),也就是JavaScri...
摘要:不能應(yīng)用下的等方法。首先我們可以通過(guò)給目標(biāo)函數(shù)指定作用域來(lái)簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無(wú)效的。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:首先我們可以通過(guò)給目標(biāo)函數(shù)指定作用域來(lái)簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無(wú)效的。而則會(huì)立即執(zhí)行函數(shù)。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:如果連續(xù)呢結(jié)果會(huì)是什么結(jié)果還是第一個(gè)原因是,在中,多次是無(wú)效的。更深層次的原因,的實(shí)現(xiàn),相當(dāng)于使用函數(shù)在內(nèi)部包了一個(gè),第二次相當(dāng)于再包住第一次故第二次以后的是無(wú)法生效的。 this 1.其實(shí)js中的this沒(méi)那么難理解,當(dāng)找不到this時(shí)記住一句話:誰(shuí)調(diào)我,我就指誰(shuí)!new 誰(shuí)指誰(shuí) function text1(){ console.log(this); //指wind...
摘要:文章盡量使用大量實(shí)例進(jìn)行講解,它們的使用場(chǎng)景。在嚴(yán)格模式下,函數(shù)被調(diào)用后,里面的默認(rèn)是后面通過(guò)調(diào)用函數(shù)上的和方法,該變指向,函數(shù)里面的指向。利用,可以傳入外層的上下文。同樣適用的還有,里面的對(duì)象,它也是一種類(lèi)數(shù)組對(duì)象。 call,apply and bind in JavaScript 在ECMAScript中,每個(gè)函數(shù)都包含兩個(gè)繼承而來(lái)的方法:apply() 和 call(),這兩個(gè)...
閱讀 1350·2021-11-11 16:54
閱讀 2396·2021-09-22 10:51
閱讀 2661·2019-08-30 15:44
閱讀 3212·2019-08-29 17:05
閱讀 1456·2019-08-29 17:01
閱讀 2912·2019-08-29 12:28
閱讀 2477·2019-08-26 13:50
閱讀 1737·2019-08-23 16:47