gpt4 book ai didi

javascript - 如何为嵌套对象使用 javascript 代理

转载 作者:IT王子 更新时间:2023-10-29 03:13:47 26 4
gpt4 key购买 nike

我在 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'

如果我这样做 proxy.inner.salary = 555; 它不起作用。

但是,如果我执行 proxy.firstName = "Anne",那么效果会很好。

我不明白为什么它不能递归地工作。

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

最佳答案

您可以添加一个get 陷阱并返回一个带有validator 的新代理作为处理程序:

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'

关于javascript - 如何为嵌套对象使用 javascript 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41299642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com