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

问题描述 投票:0回答:4

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

myObject = {};

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

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

而不是

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

我的方法有什么问题吗?

javascript object
4个回答
15
投票

当您写入

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

您可以使用 jQuery:

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

14
投票

如果没有 jQuery,您可以使用如下内容创建对象数组:

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

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

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

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


2
投票

或者,更干净的东西:

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"};

0
投票

您可以使用 Javascript

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

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

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

结果将是

{ a: '1', b: '2', c: '3', d: '4' }
© www.soinside.com 2019 - 2024. All rights reserved.