gpt4 book ai didi

javascript - 如何在javascript中不断更新关系?

转载 作者:行者123 更新时间:2023-12-03 04:00:45 25 4
gpt4 key购买 nike

例如,如果我说
var a = 2;
var b = a + 2;//a 是 2 b 是 4
a = 3;//a是3 b是4

有没有什么方法可以设置这种关系,使得当 a 更改时,b 根据关系和 a 的当前值更改,而不是最初设置,然后 a 以后发生的任何事情都不会影响 b。我知道您可以使用更新函数做一些事情,每次使用监听器发生任何更改时都会调用该函数,然后重置那里的关系,或者在某些情况下使用对象和指针,但是有没有一种方法可以将其内置到语言中?我这么问是因为我正在尝试显示 slider 等 html 和 ui 元素,并且我想在很多不同的地方将 slider 的更新值显示为 html 元素,并在很多不同的地方使用它。我也经常遇到这样的问题。现在我正在用一个运行每一帧的循环来做这件事,这就是几乎所有事情发生的地方,所以我只是更新那里的关系,这真的很不方便,而且读起来也不愉快。语言中是否内置了一些我不知道的东西,甚至只是更简单的方法?我不是问任何具体的事情,我的意思是当你以任何方式定义任何变量时,你能让这个定义不断更新吗?

最佳答案

您可以使用对象的属性来计算派生值。假设 astate 对象的属性,您可以将 b 设为从 a 派生的值,这样b 始终为 a + 2

如果您想在每次 a 更改时启动某种 UI 更新,则可以另外使用 setter 使 a 成为属性。

let state = {
_a: 2,
get a(){
return this._a
},
set a(v){
this._a = v
console.log("update state")
},
get b(){
return this.a + 2
}
}

console.log(state.a, state.b)
state.a = 3
console.log(state.b)

// change b computed value
Object.defineProperty(state, 'b', {
get: function() { return this.a + 3; },
enumerable: true,
configurable: true
});
console.log(state.b)

关于javascript - 如何在javascript中不断更新关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44732516/

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