欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)卓資免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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)
    }
專門建立的學(xué)習(xí)Q-q-u-n ⑦⑧④-⑦⑧③-零①②  分享學(xué)習(xí)方法和需要注意的小細(xì)節(jié),互相交流學(xué)習(xí),不停更新最新的教程和學(xué)習(xí)技巧(從零基礎(chǔ)開始到WEB前端項(xiàng)目實(shí)戰(zhàn)教程,學(xué)習(xí)工具,全棧開發(fā)學(xué)習(xí)路線以及規(guī)劃)

那我們想改變函數(shù)執(zhí)行時(shí)綁定的 this 怎么辦呢?

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

call、apply 的用法:

每個(gè)函數(shù)都有兩個(gè)非繼承而來的方法: apply ( ) 和 call ( )。這兩個(gè)方法的用途都是在特定的作用域中調(diào)用函數(shù),實(shí)際上就是用來設(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è)列出來。

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 可以用來干點(diǎn)啥好事兒呢?

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

本文題目:JavaScript函數(shù)作用域、執(zhí)行環(huán)境(this)、call、apply、bind的用法
本文鏈接:http://chinadenli.net/article36/gspspg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)網(wǎng)站內(nèi)鏈云服務(wù)器電子商務(wù)移動(dòng)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)