成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 的 this 和 apply call bind

lolomaco / 1225人閱讀

摘要:是誰,在函數(shù)運(yùn)行時才能確定,誰調(diào)用了函數(shù)誰就是,就是調(diào)用者例如是是調(diào)用了函數(shù),所以函數(shù)中的就是調(diào)用者是同理什么是全局對象,瀏覽器的全局對象是,中全局對象是在瀏覽器中直接調(diào)用一個函數(shù),那么就是調(diào)用者是例如是的作用,中函數(shù)是一個對象,所以函數(shù)可

this 是誰

1,this 在函數(shù)運(yùn)行時才能確定
2,誰調(diào)用了函數(shù)誰就是 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,瀏覽器的全局對象是 window
2,node.js 中全局對象是 global

在瀏覽器中直接調(diào)用一個函數(shù),那么 this 就是 window (調(diào)用者是 window

例如

var hello = function() {
  console.log("this 是,", this)
}
hello()

apply call bind 的作用

1,JavaScript 中函數(shù)是一個對象,所以函數(shù)可以有方法
2,apply call bind 都是函數(shù)的方法,用來給函數(shù)指定 this

apply

1,apply 接受兩個參數(shù)
2,第一個參數(shù)為函數(shù)里的 this
3,第二個參數(shù)為要傳給函數(shù)的參數(shù)列表,(這個參數(shù)列表可以當(dāng)做是個數(shù)組來理解,實際上不是數(shù)組
4,apply 會把這個參數(shù)列表拆成一個個的參數(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 類似,區(qū)別是 call 只能把參數(shù)一個個傳入

例如

console.log.call(console, 1, 2, 3)
// 相當(dāng)于 
console.log(1, 2, 3)

bind

1,bind 只能返回一個函數(shù)讓你調(diào)用
2,bind 的第一個參數(shù)為函數(shù)里的 this
3,bind 還可以有額外的參數(shù)

例如

var log = console.log.bind(console, "這里是額外參數(shù)")
log("hello")

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103149.html

相關(guān)文章

  • 理解 JavaScript call()/apply()/bind()

    摘要:理解文章中已經(jīng)比較全面的分析了在中的指向問題,用一句話來總結(jié)就是的指向一定是在執(zhí)行時決定的,指向被調(diào)用函數(shù)的對象。與和直接執(zhí)行原函數(shù)不同的是,返回的是一個新函數(shù)。這個新函數(shù)包裹了原函數(shù),并且綁定了的指向為傳入的。 理解 JavaScript this 文章中已經(jīng)比較全面的分析了 this 在 JavaScript 中的指向問題,用一句話來總結(jié)就是:this 的指向一定是在執(zhí)行時決定的,...

    duan199226 評論0 收藏0
  • JavaScript函數(shù)callapplybind

    摘要:它們有明確的和成員函數(shù)的定義,只有的實例才能調(diào)用這個的成員函數(shù)。用和調(diào)用函數(shù)里用和來指定函數(shù)調(diào)用的,即指針的指向。同樣,對于一個后的函數(shù)使用或者,也無法改變它的執(zhí)行,原理和上面是一樣的。 函數(shù)里的this指針 要理解call,apply和bind,那得先知道JavaScript里的this指針。JavaScript里任何函數(shù)的執(zhí)行都有一個上下文(context),也就是JavaScri...

    alighters 評論0 收藏0
  • JS中call、apply、bind方法詳解

    摘要:不能應(yīng)用下的等方法。首先我們可以通過給目標(biāo)函數(shù)指定作用域來簡單實現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個更加健壯的這次的方法可以綁定對象,也支持在綁定的時候傳參。原因是,在中,多次是無效的。 bind 是返回對應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...

    zombieda 評論0 收藏0
  • JS基礎(chǔ)篇--call、applybind方法詳解

    摘要:首先我們可以通過給目標(biāo)函數(shù)指定作用域來簡單實現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個更加健壯的這次的方法可以綁定對象,也支持在綁定的時候傳參。原因是,在中,多次是無效的。而則會立即執(zhí)行函數(shù)。 bind 是返回對應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...

    lastSeries 評論0 收藏0
  • javascript關(guān)于this 以及this顯示設(shè)置(apply、call、bind)

    摘要:如果連續(xù)呢結(jié)果會是什么結(jié)果還是第一個原因是,在中,多次是無效的。更深層次的原因,的實現(xiàn),相當(dāng)于使用函數(shù)在內(nèi)部包了一個,第二次相當(dāng)于再包住第一次故第二次以后的是無法生效的。 this 1.其實js中的this沒那么難理解,當(dāng)找不到this時記住一句話:誰調(diào)我,我就指誰!new 誰指誰 function text1(){ console.log(this); //指wind...

    LiveVideoStack 評論0 收藏0
  • call,apply and bind in JavaScript

    摘要:文章盡量使用大量實例進(jìn)行講解,它們的使用場景。在嚴(yán)格模式下,函數(shù)被調(diào)用后,里面的默認(rèn)是后面通過調(diào)用函數(shù)上的和方法,該變指向,函數(shù)里面的指向。利用,可以傳入外層的上下文。同樣適用的還有,里面的對象,它也是一種類數(shù)組對象。 call,apply and bind in JavaScript 在ECMAScript中,每個函數(shù)都包含兩個繼承而來的方法:apply() 和 call(),這兩個...

    JohnLui 評論0 收藏0

發(fā)表評論

0條評論

lolomaco

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<