Подтвердить что ты не робот

Расширение объекта с несколькими свойствами в JavaScript

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

myObject = {};

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

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

вместо

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

Или, что-то более чистое:

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