let test = {}
Object.defineProperty(test,'value',{
get(){
return test._value;
},
set(newValue){
test._value = newValue;
document.getElementById('example').value = newValue;
}
});
document.getElementById('example').addEventListener('input',function(event){
test.value = event.target.value
console.log(test.value)
})
//前面加了下划线。这是一种常用的记号,用来表示该变量是对象方法使用的(set、get等内部方法),否则会造成循环引用导致栈溢出
// proxy
let text = {a:1,c:2,b:[1,2,3]}
let newText = new Proxy(text,{
get(target,key){
console.log('调用了get')
return target[key]
},
set(target,key,newVal){
if(target[key]!==newVal){
target[key] = newVal
}
console.log('调用了set')
return newVal
}
})
console.log(newText)