例如,我定义一个对象obj

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


我想访问所有未知孩子的吸气剂相同的值,例如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如何获取和设置对象中所有未知子项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54967513/

10-13 05:55