Proxy的簡單使用

function fun(person){
    return new Proxy(person,{
        get:function(target,property){
            if(property in target){
                return target[property]
            }else{
                //屬性不存在時返回的默認值
                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中提供的一個非常強大的功能,可以用來代理另一個對象,從而攔截、監(jiān)視并修改這個對象的各種操作

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

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

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

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容