Существуют ли какие-либо существующие методы для добавления объекта к другому объекту?
Я попытался собрать это вместе, но я не уверен насчет пары вещей:
Я Я правильно обработал методы? Я добавил исключение для добавления, но что делать, если существуют другие функции-прототипы? Должен ли я просто игнорировать функции в новом классе?
Что мне делать с нулевыми / неопределенными значениями?
Кроме того, я только что подумал о массивах ... как лучше всего обрабатывать массивы? typeof сообщает как «объект» .. Я предполагаю, что тестирование Array (). значение конструктора было бы путем вперед
Помимо этих двух проблем, похоже, он функционирует так, как я хочу (перезапись / добавление отдельных частей существующего объекта только там, где они существуют в новом объекте). Есть ли крайние случаи, которые я пропустил?
Object.prototype.append = function(_newObj)
{
if('object' !== typeof _newObj) {
console.info("ERROR!\nObject.prototype.append = function(_newObj)\n\n_newObj is not an Object!");
}
for (newVar in _newObj)
{
switch(typeof _newObj[newVar]){
case "string":
//Fall-through
case "boolean":
//Fall-through
case "number":
this[newVar] = _newObj[newVar];
break;
case "object":
this[newVar] = this[newVar] || {};
this[newVar].append(_newObj[newVar]);
break;
case "function":
if(newVar !== 'append'){
this[newVar] = _newObj[newVar];
}
break;
}
}
return this;
}
var foo = { 1:'a', 2:'b', 3:'c' };
var bar = { z: 26, y: 25, x: 24, w: { 'foo':'bar'}, v: function(){ alert('Hello world"'); } };
foo.append(bar);
console.info(foo);