Расширение объекта с несколькими свойствами в JavaScript - PullRequest
13 голосов
/ 07 апреля 2011

У меня есть глобальный объект JavaScript с несколькими свойствами и функциями, которые я создаю следующим образом:

myObject = {};

Я подумал, что могу легко расширить этот объект, создав что-то вроде этого

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

вместо

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

Что не так с моим подходом?

Ответы [ 3 ]

14 голосов
/ 07 апреля 2011

Когда вы пишете myObject = { ... }, вы создаете совершенно новый объект и устанавливаете myObject, чтобы указать на него.
Предыдущее значение myObject выбрасывается.

Вместо этого вы можете использовать jQuery:

jQuery.extend(myObject, { newProperty: whatever });
13 голосов
/ 07 апреля 2011

Без jQuery вы можете создать массив объектов с чем-то вроде этого:

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

Если вам не нужна совместимость, последние браузеры должны поддерживать это:

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

Это будет перебирать все элементы в newObject и добавлять их в myObj.

1 голос
/ 28 октября 2015

Или что-нибудь чище:

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"};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...