json 在对象构造期间从嵌套对象获取属性名时,getter在嵌套对象中如何工作?

idfiyjo8  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(91)

我想在对象构造过程中获取对象中的嵌套属性名称。
我做错了什么?如何获得预期输出:'c'是否从嵌套对象中删除?

const obj = {
  log: ['a', 'b', 'c'],
  get latest() {
    return this.log[this.log.length - 1];
  }
};

console.log(obj.latest);
// Expected output: "c"
// Actual output: "c"

确认。上面的启动示例有效。
现在,我想添加嵌套(obj.level1),这是事情崩溃的地方。

修改尝试1:不工作
const obj = {
  level1: {
    log: ['a', 'b', 'c'],
    get latest() {
      return this.log[this.log.length - 1];
    }
  }
};

console.log(obj.latest);
// Expected output: "c"
// Actual output: undefined
修改尝试2:不工作
const obj = {
  level1: {
    log: ['a', 'b', 'c'],
    get latest() {
      return this.log[this.level1.log.length - 1];
    }
  }
};

console.log(obj.latest);
// Expected output: "c"
// Actual output: undefined
qhhrdooz

qhhrdooz1#

你的latest函数存在于level1深度上,所以下面的代码是有效的:

console.log(obj.level1.latest)

但是,如果这不是您的意图,您应该这样编写对象。

const obj = {
  level1: {
     log: ['a', 'b', 'c']
  },
  get latest() {
    return this.level1.log.at(-1);
  }
};
7kjnsjlb

7kjnsjlb2#

在你的修改中,obj没有latest getter,它在子对象level1中,所以试着记录obj.level1.latest

相关问题