gpt4 book ai didi

javascript - 通过引用克隆对象的属性

转载 作者:行者123 更新时间:2023-12-02 16:43:12 25 4
gpt4 key购买 nike

我的数据对象:

var data = {
foo: {
bar: 42
},
baz: true,
x: 1,
y: 2
};

现在我想将此对象作为 JSON 字符串发送。 但是在发送之前,我想修改我的对象仍保留原始对象。

var json = data;
json.foo = json.foo.bar;
json.id = json.baz;
delete json.baz;

当然,这也会修改我的data对象。

是否可以创建与第一个对象具有相同结构的第二个对象,它允许重命名/删除某些属性而不更改第一个对象?

我知道我可以做到这一点:

var json = {
foo: data.foo.bar,
id: data.baz,
x: data.x,
y: data.y
};

但想象一下 data 对象包含 50 个属性,而我只想更改其中两个。

由于性能原因,我不想使用 jQuery.copyangular.copy (它们创建真实副本 - 即应该没有必要)。

也许有这样的事情?

var json = {
foo: data.foo.bar,
id: data.baz
};
json = merge(json, data);
delete json.baz;

谢谢! :)

最佳答案

您可以使用angular.extend()jQuery.extend()仅复制原始对象自己的属性。即浅复制

var json = angular.extend({}, data);
json.foo = data.foo.bar;
json.id = data.baz;
delete json.baz;

var json = angular.extend({}, data, {
foo: data.foo.bar,
id: data.baz
});
delete json.baz;

请注意,以下内容将不起作用,因为 datafoo 将覆盖第一个参数对象的 foo

var json = angular.extend({
foo: data.foo.bar,
id: data.baz
}, data);
delete json.baz;

关于javascript - 通过引用克隆对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27327001/

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