gpt4 book ai didi

javascript - 深度自引用对象的属性

转载 作者:行者123 更新时间:2023-12-04 10:52:31 24 4
gpt4 key购买 nike

是否可以在 JS 对象中进行深度自引用?

我知道可以在同一级别进行自我引用,如下所示:

var foo = {
a: 'bar',
b: 'baz',
c: () => {
return this.a + this.b;
}
};
console.log(foo.c()); // barbaz


我只是很好奇是否有可能从更深的层面做到这一点......

var foo = {
a: 'bar',
b: 'baz',
c: {
ca: 'hello',
cb: () => {
return this.a + this.b;
}
}
};
console.log(foo.c.cb()); // barbaz


如果没有......人们将如何让它发挥作用?

最佳答案

一种解决方案是call您的 cb以 foo 对象作为上下文的方法然后 this将引用fooab会被找到,但是你应该使用常规函数而不是箭头函数。

var foo = {
a: 'bar',
b: 'baz',
c: {
ca: 'hello',
cb: function() {
return this.a + this.b;
}
}
};

console.log(foo.c.cb.call(foo));


另一种解决方法是转 c进入 getter 然后你可以使用箭头函数,因为上下文将是 getter 的上下文,在这种情况下是根对象。

var foo = {
a: 'bar',
b: 'baz',
get c() {
return {
ca: 'hello',
cb: () => {
return this.a + this.b;
}
}
}
};

console.log(foo.c.cb());

关于javascript - 深度自引用对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59412087/

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