gpt4 book ai didi

JavaScript - 更新/重新初始化对象

转载 作者:行者123 更新时间:2023-12-03 04:15:36 24 4
gpt4 key购买 nike

我有一个“Product”对象,其值彼此依赖,如下所示:

function Product(object) {
this.object = object;
this.data = {
id: this.object.val(),
}
}

var product = new Product($('input[name="productId"]:checked'));

而且...它正在工作。但是,我想在输入更改时重新初始化整个对象,因为我在这里得到的对象很少:

 <input type="radio" name="productId" value="ONE" checked="checked" />
<input type="radio" name="productId" value="TWO" />

我可以在更改事件上手动设置新值:

$(function () {
$('input[name="productId"]').change(function(e) {
e.preventDefault();
product.object = $('input[name="productId"]:checked');
});
});

但它只会更改“对象”值,不会影响其中的其他值。

我当然可以在更改事件上手动设置每个新值​​,但似乎不对,不是吗?我不想每次更新时都重复一遍,我只是想重新生成该对象。

现在我有一个在 Product 对象中使用公共(public)函数的解决方法,然后在更改事件上调用它。

 this.updateData = function() {
this.data.id = this.object.val();
}

但是,它只是重复每个声明,而且会非常困惑,因为会出现更多的对象属性,而不仅仅是“id”。

最佳答案

你想改变对象的每个属性吗?如果是这样,那么为什么不创建新对象来代替旧对象呢?

$(function () {
$('input[name="productId"]').change(function(e) {
e.preventDefault();
product = new Product($('input[name="productId"]:checked'));
});
});

但是如果您出于某种原因希望保留该对象,您可以这样做:

function Product(object) {
this.updateData = function(o) {
this.object = o;
if (!this.data) this.data = {};
this.data.id = this.object.val();
//etc...
}
this.updateData(object)
}

关于JavaScript - 更新/重新初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44152083/

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