gpt4 book ai didi

javascript - 更新 JS 对象

转载 作者:行者123 更新时间:2023-11-28 14:02:17 25 4
gpt4 key购买 nike

我想要的是以一种简单的方式替换实例属性,并在类本身内部执行此操作。因此我可以利用构造函数,而不必创建一个巨大的方法来更新。

function Champ(champ ){
var instance = this
instance.id = champ.id
// PERSONAL
instance.name = champ.name
instance.lore = champ.lore
// ATTRIBUTES
instance.attr1 = champ.attr1
instance.attr2 = champ.attr2
instance.fitness = champ.fitness
// BARS
instance.energy = champ.energy
instance.stress = champ.stress

function update( new_champ ){
instance = new Champ( new_champ );
}

this.location = "1"

this.update = update
}

// I will put in a simple way, how does it fail for me and how do I wanted it to behave

c = new Champ( {energy: 1, stress : 1} )
c.energy //=> 1 (OK)
c.update( { energy: 9, stress: 9} )
c.energy //=> 1 (FAIL, I wanted it to be 9)

我想我真的很天真,有没有一个好的方法可以让它在类中进行这种上下文替换?

最佳答案

为什么不这样:

function update(new_champ) {
for(var prop in new_champ) {
if(new_champ.hasOwnProperty(prop) && this.hasOwnProperty(prop)) {
this[prop] = new_champ[prop];
}
}
}

这会循环传递给函数的对象的属性,并仅当实例具有此类属性时才更新实例的相应属性。

顺便说一句。你应该考虑使用prototype用于创建类方法。

关于javascript - 更新 JS 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303938/

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