Sunday, June 2, 2024
 Popular · Latest · Hot · Upcoming
99
rated 0 times [  106] [ 7]  / answers: 1 / hits: 26960  / 8 Years ago, fri, december 23, 2016, 12:00:00

I have this code in js bin:



var validator = {
set (target, key, value) {
console.log(target);
console.log(key);
console.log(value);
if(isObject(target[key])){

}
return true
}
}


var person = {
firstName: alfred,
lastName: john,
inner: {
salary: 8250,
Proffesion: .NET Developer
}
}
var proxy = new Proxy(person, validator)
proxy.inner.salary = 'foo'


if i do proxy.inner.salary = 555; it does not work.



However if i do proxy.firstName = Anne, then it works great.



I do not understand why it does not work Recursively.



http://jsbin.com/dinerotiwe/edit?html,js,console


More From » proxy

 Answers
30

You can add a get trap and return a new proxy with validator as a handler:





var validator = {
get(target, key) {
if (typeof target[key] === 'object' && target[key] !== null) {
return new Proxy(target[key], validator)
} else {
return target[key];
}
},
set (target, key, value) {
console.log(target);
console.log(key);
console.log(value);
return true
}
}


var person = {
firstName: alfred,
lastName: john,
inner: {
salary: 8250,
Proffesion: .NET Developer
}
}
var proxy = new Proxy(person, validator)
proxy.inner.salary = 'foo'




[#59588] Wednesday, December 21, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
eastonb

Total Points: 498
Total Questions: 91
Total Answers: 102

Location: Tanzania
Member since Wed, Feb 24, 2021
3 Years ago
;