哎呀,小伙子,你不知道JavaScript中call()、apply()、bind()這三個(gè)小家伙都有啥用嗎?那我經(jīng)驗(yàn)豐富的程序員親自來(lái)給你講解一下吧。
看,這三個(gè)小家伙都是用于改變JavaScript函數(shù)中this指針的引用的,讓它們指向不同的對(duì)象。其中,call()和apply()的作用是直接改變this的引用并執(zhí)行函數(shù),bind()則是將函數(shù)與新的this綁定起來(lái)返回一個(gè)新的函數(shù),以便稍后調(diào)用。看明白了吧?
下面,我們就來(lái)看一下這三個(gè)小家伙的用法吧。
#1. call()的用法
小伙子,假設(shè)有一個(gè)對(duì)象和一個(gè)函數(shù):
```JavaScript
var obj = {name: '小明'};
function greet(){
console.log('你好,' + this.name);
}
```
如果我們要將greet()中的this引用變成obj對(duì)象,就要用到call()。簡(jiǎn)單的調(diào)用方式是這樣的:
```JavaScript
greet.call(obj);
```
#2. apply()的用法
小伙子,apply()和call()很相似,只是傳參數(shù)的方式不一樣。如果有一個(gè)對(duì)象和一個(gè)函數(shù):
```JavaScript
var obj = {name: '小明'};
function greet(age, gender){
console.log('你好,我叫'+ this.name + ',我今年' + age + '歲,我是' + gender + '的');
}
```
則可以這樣調(diào)用:
```JavaScript
greet.apply(obj, [18, '男']);
```
這里傳遞的第二個(gè)參數(shù)是一個(gè)數(shù)組,包含了函數(shù)所需的所有參數(shù)。
#3. bind()的用法
小伙子,我們來(lái)看看bind()的用法吧。假設(shè)有一個(gè)對(duì)象和一個(gè)函數(shù):
```JavaScript
var obj = {name: '小明'};
function greet(){
console.log('你好,' + this.name);
}
```
可以這樣使用bind():
```JavaScript
var newGreet = greet.bind(obj);
newGreet();
```
這里,我們將原來(lái)的greet()函數(shù)與obj對(duì)象綁定在一起,返回一個(gè)新的函數(shù)newGreet,稍后直接調(diào)用newGreet()就可以了。
好的,小伙子,以上就是call()、apply()、bind()這三個(gè)小家伙的用法。你牢記了沒(méi)有?快去試試?。? www.yinyiprinting.cn 寧波海美seo網(wǎng)絡(luò)優(yōu)化公司 是網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站優(yōu)化,企業(yè)關(guān)鍵詞排名,網(wǎng)絡(luò)營(yíng)銷知識(shí)和開(kāi)發(fā)愛(ài)好者的一站式目的地,提供豐富的信息、資源和工具來(lái)幫助用戶創(chuàng)建令人驚嘆的實(shí)用網(wǎng)站。 該平臺(tái)致力于提供實(shí)用、相關(guān)和最新的內(nèi)容,這使其成為初學(xué)者和經(jīng)驗(yàn)豐富的專業(yè)人士的寶貴資源。
聲明本文內(nèi)容來(lái)自網(wǎng)絡(luò),若涉及侵權(quán),請(qǐng)聯(lián)系我們刪除! 投稿需知:請(qǐng)以word形式發(fā)送至郵箱18067275213@163.com
好一句為祖國(guó)而賽,好樣的~看得我熱血沸騰