gpt4 book ai didi

javascript - 当属性更改时更新另一个属性?

转载 作者:行者123 更新时间:2023-12-02 22:42:02 24 4
gpt4 key购买 nike

我想在我的 javascript 对象上创建一个依赖属性。我有一个像代码片段中那样的对象。我想更新 isPawn 属性;当 isNew 属性改变时。

有没有办法自动执行类似的操作;

if(isNew){
isPawn = true;
}

但它们不必相同。当 isPawn 为“true”时,isNew 可以为“false”

我的对象:

var Soldier = function (id,name) {
this.id = id;
this.name = name;
this.isPawn = false;
this.isNew = false;
}

最佳答案

是的,您可以使用 setter 来完成此操作,这是一个示例:

class Soldier {
#isNew = false;
constructor(id,name) {
this.id = id;
this.name = name;
this.isPawn = false;
}

set isNew(val) {
this.#isNew = val;
this.isPawn = val;
}

get isNew() {
return this.#isNew;
}
}

const soldier = new Soldier();
soldier.isNew = true;
console.log('isNew:', soldier.isNew, 'isPawn', soldier.isPawn);
soldier.isNew = false;
console.log('isNew:', soldier.isNew, 'isPawn', soldier.isPawn);
soldier.isPawn = true;
console.log('isNew:', soldier.isNew, 'isPawn', soldier.isPawn);

#isNewprivate field在本例中,我使用它来跟踪 isNew 的值应该是什么(getter 应该返回什么)。

这是一个使用函数而不是类的示例:

var Soldier = function(id, name) {
this.id = id;
this.name = name;
this.isPawn = false;
this.isNewPriv = false;
Object.defineProperty(this, 'isNew', {
set: function(val) {
this.isNewPriv = val;
this.isPawn = val;
},
get: function() {
return this.isNewPriv
}
});
}

var soldier = new Soldier(1, 'none');
soldier.isNew = true;
console.log("isNew:", soldier.isNew, "isPawn:", soldier.isPawn);
soldier.isNew = false;
console.log("isNew:", soldier.isNew, "isPawn:", soldier.isPawn);
soldier.isPawn = true;
console.log("isNew:", soldier.isNew, "isPawn:", soldier.isPawn);

关于javascript - 当属性更改时更新另一个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58558325/

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