国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 函數(shù)作用域、執(zhí)行環(huán)境(this)、call、apply、bind 的用法

1fe1se / 3080人閱讀

摘要:什么是函數(shù)的作用域函數(shù)作用域在中,作用域?yàn)榭稍L問變量,對(duì)象,函數(shù)的集合。函數(shù)作用域作用域在函數(shù)內(nèi)修改。與函數(shù)又有什么關(guān)系呢對(duì)象是在運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境綁定的。

什么是函數(shù)的作用域

函數(shù)作用域:在 JavaScript 中,作用域?yàn)榭稍L問變量,對(duì)象,函數(shù)的集合。JavaScript 函數(shù)作用域: 作用域在函數(shù)內(nèi)修改。

this 與函數(shù)又有什么關(guān)系呢?

this對(duì)象是在運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境綁定的。比如:在全局函數(shù)中,this 等同于 window 或者 global,而當(dāng)函數(shù)被作為方法調(diào)用時(shí),this 等于那個(gè)對(duì)象。特別需要注意的是在執(zhí)行諸如:setInterval、setTimeout 等函數(shù)的回調(diào)時(shí),此時(shí)的 this 其實(shí)是指向全局 window 的,因?yàn)轭愃七@樣的方法其實(shí)是 window 的屬性方法。所以我們經(jīng)常會(huì)看到類似下面的代碼:

var a = {
    age: 21,
    addAge: function() {
        var that = this
        setInterval(function() {
            that.age += 1
        }, 1000)
    }
那我們想改變函數(shù)執(zhí)行時(shí)綁定的 this 怎么辦呢?

call、apply、bind 可以用來(lái)干這個(gè)事情,哈哈~

call、apply 的用法:

每個(gè)函數(shù)都有兩個(gè)非繼承而來(lái)的方法: apply ( ) 和 call ( )。這兩個(gè)方法的用途都是在特定的作用域中調(diào)用函數(shù),實(shí)際上就是用來(lái)設(shè)置函數(shù)體內(nèi)的 this對(duì)象 的值。兩個(gè)方法的作用是相同的,唯一的區(qū)別是接收參數(shù)的方式不一樣。兩個(gè)方法的第一個(gè)參數(shù)是接收一個(gè)對(duì)象或者 null,區(qū)別是 apply 接收兩個(gè)參數(shù),第二個(gè)參數(shù)可以是 數(shù)組或者類數(shù)組的對(duì)象(arguments)這樣。ES6 的 Set 實(shí)例也可以。call 方法就比較厲害了,它接收多個(gè)參數(shù),除第一個(gè)對(duì)象參數(shù)外,其余的參數(shù)要一個(gè)一個(gè)列出來(lái)。

function sum(num1, num2) {
    return num1 + num2
}
sum.apply(this, [1, 2]) // 3
sum.call(this, 1, 2) // 3

其實(shí),call 和 apply 方法的強(qiáng)大在于,能擴(kuò)充函數(shù)運(yùn)行的運(yùn)用域:

var color = "yellow"
var obj = {
    color: "blue"
}
function checkColor () {
    console.log(this.color)
}
checkColor() // yellow
checkColor.call(this) // yellow
checkColor.call(window) // yellow,此處 this === window
checkColor.call(obj) // blue
那 bind 可以用來(lái)干點(diǎn)啥好事兒呢?

ES 5 為函數(shù)定義了一個(gè) bind 方法。這個(gè)方法會(huì)創(chuàng)建一個(gè)函數(shù)的實(shí)例,實(shí)例執(zhí)行時(shí)的 this 值會(huì)被綁定到傳給 bind ( ) 函數(shù)的值。舉個(gè)

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/109541.html

相關(guān)文章

  • javascript基礎(chǔ)之this

    摘要:出現(xiàn)箭頭函數(shù)的時(shí)候,指向?yàn)槎x時(shí)的上下文對(duì)象而非指向時(shí),并且不能被改變首先我們先看一個(gè)例子由上面的例子我們可以看出來(lái)此時(shí)指針在用改變了之后指向的依然是全局對(duì)象非嚴(yán)格瀏覽器環(huán)境中是而非。 javascript基礎(chǔ)之this指針 越往后面學(xué)越發(fā)現(xiàn)基礎(chǔ)的重要性,所以打算重新過(guò)一遍基礎(chǔ),之后出幾個(gè)vue和react的實(shí)戰(zhàn)教程。ok,嚴(yán)歸正傳。 首先什么是this this是執(zhí)行上下文創(chuàng)建時(shí)確定...

    Zoom 評(píng)論0 收藏0
  • 前端_JavaScript_面向?qū)ο缶幊?/b>

    摘要:面向?qū)ο缶幊虒?duì)象的原生方法分成兩類自身的方法靜態(tài)方法和的實(shí)例方法。的靜態(tài)方法方法與,參數(shù)是對(duì)象,返回一個(gè)數(shù)組,數(shù)組的值是改對(duì)象自身的所有屬性名區(qū)別在于返回可枚舉的屬性,返回不可枚舉的屬性值。 面向?qū)ο缶幊?Objects對(duì)象的原生方法分成兩類:Object自身的方法(靜態(tài)方法)和Object的實(shí)例方法。注意Object是JavaScript的原生對(duì)象,所有的其他對(duì)象都是繼承自O(shè)bjec...

    Blackjun 評(píng)論0 收藏0
  • Know this, use this! (總結(jié) this 常見用法)

    摘要:而當(dāng)做普通函數(shù)調(diào)用的話,實(shí)際上即第種情況下,對(duì)函數(shù)普通調(diào)用,此時(shí)的指向這是正常情況下,會(huì)正確返回并且指向該對(duì)象,但是在構(gòu)造函數(shù)當(dāng)中,如果返回了一個(gè)對(duì)象,那么會(huì)指向返回的那個(gè)對(duì)象。 this應(yīng)該是一個(gè)討論了很久的話題了。其中,關(guān)于this的文章,在很多的博客當(dāng)中也有很多介紹,但是,以前我都是一知半解的去了解它,就是看博客當(dāng)中,只介紹了一些情況下的 this 的使用方式,但是也并沒有自己去...

    zorro 評(píng)論0 收藏0
  • this學(xué)習(xí)筆記

    摘要:但是有一個(gè)總的原則,那就是指的是,調(diào)用函數(shù)的那個(gè)對(duì)象作為函數(shù)調(diào)用在函數(shù)被直接調(diào)用時(shí)綁定到全局對(duì)象。這一過(guò)程分為三步創(chuàng)建類的實(shí)例。這步是把一個(gè)空的對(duì)象的屬性設(shè)置為。函數(shù)被傳入?yún)?shù)并調(diào)用,關(guān)鍵字被設(shè)定為該實(shí)例。 this 的值到底是什么?一次說(shuō)清楚你怎么還沒搞懂 this?this、apply、call、bind 一、Whats this? 由于運(yùn)行期綁定的特性,JavaScript 中的...

    nanfeiyan 評(píng)論0 收藏0
  • js函數(shù)this理解?手寫applycallbind就夠了

    摘要:一是什么函數(shù)的內(nèi)部屬性,引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象。函數(shù)做為節(jié)點(diǎn)事件調(diào)用時(shí)指向節(jié)點(diǎn)本身做為構(gòu)造函數(shù)實(shí)力化方法時(shí)指向?qū)嵗龑?duì)象箭頭函數(shù)里的普通函數(shù),由于閉包函數(shù)是執(zhí)行的,所以指向箭頭函數(shù)的指向函數(shù)創(chuàng)建時(shí)的作用域。 一、this是什么? 函數(shù)的內(nèi)部屬性,this引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象。也就是說(shuō)函數(shù)的this會(huì)指向調(diào)用函數(shù)的執(zhí)行環(huán)境。 function a(){ retur...

    Cciradih 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<