Cómo usar el proxy de JavaScript para objects nesteds

Tengo este código en 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: "alfnetworking", lastName: "john", inner: { salary: 8250, Proffesion: ".NET Developer" } } var proxy = new Proxy(person, validator) proxy.inner.salary = 'foo' 

si hago proxy.inner.salary = 555; No funciona.

Sin embargo, si hago proxy.firstName = "Anne" , entonces funciona bien.

No entiendo por qué no funciona recursivamente.

Puede agregar una trampa de get y devolver un nuevo proxy con el validator como controller:

 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: "alfnetworking", lastName: "john", inner: { salary: 8250, Proffesion: ".NET Developer" } } var proxy = new Proxy(person, validator) proxy.inner.salary = 'foo'