溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ES6中Proxy與Reflect怎么實(shí)現(xiàn)重載overload

發(fā)布時(shí)間:2022-04-20 16:13:15 來(lái)源:億速云 閱讀:149 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹了ES6中Proxy與Reflect怎么實(shí)現(xiàn)重載overload的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇ES6中Proxy與Reflect怎么實(shí)現(xiàn)重載overload文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

Proxy與Reflect實(shí)現(xiàn)重載(overload)

從語(yǔ)法角度講JavaScript不支持重載。原因很簡(jiǎn)單,JS中函數(shù)可以傳入任意類型、任意個(gè)數(shù)的參數(shù),通通可以通過在函數(shù)內(nèi)使用this.arguments獲得。這樣,就無(wú)法實(shí)現(xiàn)同名函數(shù)參數(shù)列表不同實(shí)現(xiàn)不同功能。當(dāng)然,在實(shí)際使用過程中,可以人為去檢測(cè)傳入實(shí)參的個(gè)數(shù)及類型,來(lái)進(jìn)行不同操作。但是,我認(rèn)為這不能叫做重載。

ES6帶來(lái)了Proxy和Reflect,配合使用可以實(shí)現(xiàn)重載。Proxy用于修改某些操作的默認(rèn)行為,相當(dāng)于對(duì)原始想進(jìn)行的操作進(jìn)行“包裝”;Reflect對(duì)象的方法與Proxy對(duì)象的方法一一對(duì)應(yīng),這使得Proxy對(duì)象可以方便的調(diào)用對(duì)應(yīng)的Reflect方法完成默認(rèn)行為。我們可以這樣使用它們:

function LogMessage( m ){
  this.m = m;
}
var message = new LogMessage( 1 );
var overload = new Proxy(message , {
  get: function(target, key, receiver){
    console.log(`getting ${key}`);
    return Reflect.get(target , key , receiver);
  },
  set: function(target, key, value, receiver){
    console.log(`setting ${key}`);
    return Reflect.set(target, key, value, receiver);
  }
});
overload.m = 2; //setting m
var s = overload.m; //getting m

關(guān)于“ES6中Proxy與Reflect怎么實(shí)現(xiàn)重載overload”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“ES6中Proxy與Reflect怎么實(shí)現(xiàn)重載overload”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI