Proxy的簡單使用

function fun(person){
    return new Proxy(person,{
        get:function(target,property){
            if(property in target){
                return target[property]
            }else{
                //屬性不存在時返回的默認(rèn)值
                return undefined;
            }
        },
        set:function(target,property,value){
            console.log(target,property,property in target);
            if(target[property]!=value){
                target[property] = value;
            }else{
                console.log("值沒有發(fā)生變化,無需要重新賦值");
            }
        }
    })
}
let rows = fun({name:'王雪'});
rows.name = '王雪';
rows.age = 120;
console.log(rows);

Proxy 是ES6中提供的一個非常強(qiáng)大的功能,可以用來代理另一個對象,從而攔截、監(jiān)視并修改這個對象的各種操作

首先是Proxy()的參數(shù):

arget:被代理的對象。
handler:被代理對象上的自定義行為,也就是對arget進(jìn)行處理的地方
handler處理函數(shù)一都有:

get(target, propKey, receiver):攔截對象屬性的讀取操作。
set(target, propKey, value, receiver):攔截對象屬性的設(shè)置操作,返回一個布爾值
has(target, propKey):攔截 propKey in proxy 操作,返回一個布爾值
deleteProperty(target, propKey):攔截對象屬性的刪除操作,返回一個布爾值
apply(target, object, args):攔截 Proxy 實例作為函數(shù)調(diào)用的操作。
construct(target, args, newTarget):攔截 Proxy 實例作為構(gòu)造函數(shù)調(diào)用的操作,返回一個對象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容