gpt4 book ai didi

javascript - Object.defineProperty 如何为对象中的所有未知子对象设置 getter 和 setter

转载 作者:行者123 更新时间:2023-11-30 07:49:54 26 4
gpt4 key购买 nike

比如我定义了一个对象obj:

var obj = {}
Object.defineProperty(obj, "a", {
value : 37,
writable : true,
enumerable : true,
configurable : true
});
console.log(obj.a); // => 37

我想访问所有未知的子级 getter 相同的值,比如 obj.a.b.c.d.e/obj.c.d.e.f.e.... => 37

最佳答案

没有办法像那样返回一个数字,因为如果您希望能够无限期地访问更多嵌套键,每个嵌套属性必须返回一个对象 - 最好您可以做的是返回一个对象,该对象可以被强制转换为所需的字符串,可能使用代理:

const handler = {
get(_, prop) {
return prop === Symbol['toPrimitive']
? () => '37'
: objProx;
}
}
const objProx = new Proxy({}, handler);

console.log('' + objProx.a); // => '37'
console.log('' + objProx.a.b); // => '37'
console.log('' + objProx.a.b.c.d.e.foobarbaz); // => '37'

关于javascript - Object.defineProperty 如何为对象中的所有未知子对象设置 getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54967513/

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