您好,登錄后才能下訂單哦!
函數(shù)作用域:在 JavaScript 中,作用域為可訪問變量,對象,函數(shù)的集合。JavaScript 函數(shù)作用域: 作用域在函數(shù)內(nèi)修改。
this對象是在運行時基于函數(shù)的執(zhí)行環(huán)境綁定的。比如:在全局函數(shù)中,this 等同于 window 或者 global,而當(dāng)函數(shù)被作為方法調(diào)用時,this 等于那個對象。特別需要注意的是在執(zhí)行諸如:setInterval、setTimeout 等函數(shù)的回調(diào)時,此時的 this 其實是指向全局 window 的,因為類似這樣的方法其實是 window 的屬性方法。所以我們經(jīng)常會看到類似下面的代碼:
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前端項目實戰(zhàn)教程,學(xué)習(xí)工具,全棧開發(fā)學(xué)習(xí)路線以及規(guī)劃)
call、apply、bind 可以用來干這個事情,哈哈~
每個函數(shù)都有兩個非繼承而來的方法: apply ( ) 和 call ( )。這兩個方法的用途都是在特定的作用域中調(diào)用函數(shù),實際上就是用來設(shè)置函數(shù)體內(nèi)的 this對象 的值。兩個方法的作用是相同的,唯一的區(qū)別是接收參數(shù)的方式不一樣。兩個方法的第一個參數(shù)是接收一個對象或者 null,區(qū)別是 apply 接收兩個參數(shù),第二個參數(shù)可以是 數(shù)組或者類數(shù)組的對象(arguments)這樣。ES6 的 Set 實例也可以。call 方法就比較厲害了,它接收多個參數(shù),除第一個對象參數(shù)外,其余的參數(shù)要一個一個列出來。
function sum(num1, num2) {
return num1 + num2
}
sum.apply(this, [1, 2]) // 3
sum.call(this, 1, 2) // 3
其實,call 和 apply 方法的強(qiáng)大在于,能擴(kuò)充函數(shù)運行的運用域:
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
ES 5 為函數(shù)定義了一個 bind 方法。這個方法會創(chuàng)建一個函數(shù)的實例,實例執(zhí)行時的 this 值會被綁定到傳給 bind ( ) 函數(shù)的值。舉個
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。