本のプロパティは: { "name": "《ES6 Basic Series ","price": 56 }; Proxy オブジェクトを使用してインターセプトする必要があり、name のプロパティは "" ES6 として表示されます。無知への入り口 "" を強制します。価格属性は読み取り専用です。
let book= {
"name":"《ES6基础系列》",
"price":56,
"author":"虫虫",
"date":"2021/8/12"
};
let proxy = new Proxy(book,{
get:function(target,property){
if( property in target ){
// 当属性为 name 时,不向外显示其真实名字
if( property == "name" ){
return "《ES6从入门到懵逼》"
}else{//其他情况下,显示其本来的属性值
return target[property]
}
}
},
set:function( target,property,value ){
if( property in target ){
//设置日期可修改
if( property == "date" ){
target[property] = value;
return true
}else{
return console.log(`${property}不允许修改`)
}
}
}
})
console.log(proxy.name);
console.log(proxy.price);
console.log(proxy.author);
proxy.author = '111';//作者不允许修改
proxy.date = '2200/8/12';
console.log(proxy.date); //2200/8/12