在 JavaScript 中扩展具有多个属性的对象

发布于 2024-10-30 21:35:50 字数 321 浏览 1 评论 0原文

我有一个具有多个属性和函数的全局 JavaScript 对象,我以这种方式创建它:

myObject = {};

我认为我可以通过创建类似的东西来轻松扩展这个对象,

myObject = { propA1 : null, ....., propAN : null};

而不是

myObject.propA1 = null;
myObject......;
myObject.propAN = null;

我的方法有什么问题?

I have a global JavaScript object with multiple properties and functions that I am creating it this way:

myObject = {};

I thought that I can easily extend this object by creating something like this

myObject = { propA1 : null, ....., propAN : null};

instead of

myObject.propA1 = null;
myObject......;
myObject.propAN = null;

What's wrong with my approach?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

幻想少年梦 2024-11-06 21:35:50

当您编写 myObject = { ... } 时,您将创建一个全新的对象并将 myObject 设置为指向它。
myObject 之前的值将被丢弃。

相反,您可以使用 jQuery:

jQuery.extend(myObject, { newProperty: whatever });

When you write myObject = { ... }, you're creating a brand-new object and setting myObject to point to it.
The previous value of myObject is thrown away.

Instead, you can use jQuery:

jQuery.extend(myObject, { newProperty: whatever });
灼疼热情 2024-11-06 21:35:50

如果没有 jQuery,您可以创建一个对象数组,如下所示:

[{'key': 'atuhoetu', 'value': 'uehtnehatn'},{...}]

如果您不关心兼容性,最新的浏览器应该支持此功能:

var newObj = {prop1: 'val', prop2: 'val'};
Object.keys(newObj).forEach(function (item) {
    myObject[item] = newObj[item];
});

这将迭代 newObject 中的所有项目并将它们添加到 myObj。

Without jQuery, you could create an array of objects with something like this:

[{'key': 'atuhoetu', 'value': 'uehtnehatn'},{...}]

If you don't care about compatibility, recent browsers should support this:

var newObj = {prop1: 'val', prop2: 'val'};
Object.keys(newObj).forEach(function (item) {
    myObject[item] = newObj[item];
});

This will iterate over all items in newObject and add them to myObj.

随遇而安 2024-11-06 21:35:50

或者,更干净的东西:

function extend(target, source){
    for(prop in source){
        target[prop] = source[prop];
    }
}

如果您按以下方式使用它:

var objA = {a: "a"};
var objB = {b: "b", c: "c"};
extend(objA, objB);

结果将是:

objA = {a: "a", b: "b", c: "c"};

Or, something cleaner:

function extend(target, source){
    for(prop in source){
        target[prop] = source[prop];
    }
}

If you use it the following way:

var objA = {a: "a"};
var objB = {b: "b", c: "c"};
extend(objA, objB);

The result will be:

objA = {a: "a", b: "b", c: "c"};
楠木可依 2024-11-06 21:35:50

您可以使用 Javascript ... 扩展运算符使用其他对象的属性来扩展对象

var myObject = { a: '1', b: '2' };
var extendWithObject = { c: '3', d: '4' };

myObject = { ...myObject, ...extendWithObject };

,结果将是

{ a: '1', b: '2', c: '3', d: '4' }

You can use Javascript ... spread operator to extend object with properties from other object

var myObject = { a: '1', b: '2' };
var extendWithObject = { c: '3', d: '4' };

myObject = { ...myObject, ...extendWithObject };

and the result will be

{ a: '1', b: '2', c: '3', d: '4' }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文