91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript 函數作用域、執行環境(this)、call、apply、bind 的用法

發布時間:2020-03-04 09:55:09 來源:網絡 閱讀:279 作者:前端向南 欄目:web開發

什么是函數的作用域

函數作用域:在 JavaScript 中,作用域為可訪問變量,對象,函數的集合。JavaScript 函數作用域: 作用域在函數內修改。

this 與函數又有什么關系呢?

this對象是在運行時基于函數的執行環境綁定的。比如:在全局函數中,this 等同于 window 或者 global,而當函數被作為方法調用時,this 等于那個對象。特別需要注意的是在執行諸如:setInterval、setTimeout 等函數的回調時,此時的 this 其實是指向全局 window 的,因為類似這樣的方法其實是 window 的屬性方法。所以我們經常會看到類似下面的代碼:

var a = {
    age: 21,
    addAge: function() {
        var that = this
        setInterval(function() {
            that.age += 1
        }, 1000)
    }
專門建立的學習Q-q-u-n ⑦⑧④-⑦⑧③-零①②  分享學習方法和需要注意的小細節,互相交流學習,不停更新最新的教程和學習技巧(從零基礎開始到WEB前端項目實戰教程,學習工具,全棧開發學習路線以及規劃)

那我們想改變函數執行時綁定的 this 怎么辦呢?

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

call、apply 的用法:

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

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

其實,call 和 apply 方法的強大在于,能擴充函數運行的運用域:

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

ES 5 為函數定義了一個 bind 方法。這個方法會創建一個函數的實例,實例執行時的 this 值會被綁定到傳給 bind ( ) 函數的值。舉個

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南康市| 赤峰市| 白水县| 云霄县| 淮安市| 元阳县| 乐平市| 大荔县| 嫩江县| 广元市| 丰镇市| 明溪县| 子洲县| 苗栗市| 镇沅| 太仓市| 汝城县| 吴忠市| 文水县| 高唐县| 祁阳县| 丽水市| 菏泽市| 依兰县| 长丰县| 和田县| 江门市| 嘉鱼县| 奉贤区| 澳门| 仁怀市| 湖北省| 桐乡市| 阿克| 衡东县| 塘沽区| 潍坊市| 武功县| 东宁县| 济源市| 长寿区|