Gibt es Methoden, um ein Objekt an ein anderes Objekt anzuhängen?Objekte an vorhandene Objekte anhängen
Ich habe zu werfen zusammen das einen schnellen Stich hatte, aber ich bin über ein paar Dinge nicht sicher:
Am I Methoden eine korrekte Abwicklung? Ich habe eine Ausnahme für append hinzugefügt, aber was ist, wenn andere Prototyp-Funktionen existieren? Sollte ich Funktionen in der neuen Klasse einfach ignorieren?
Was kann ich bei null/undefinierten Werten tun?
Auch habe ich gerade über Arrays nachgedacht .. Was wäre der beste Weg, um Arrays zu behandeln? typeof Berichte als ‚Objekt‘ .. Ich denke, dass das Array Prüfung(). Konstruktor Wert der richtige Weg wäre
Anders als diese paar Fragen, um es scheint zu funktionieren, wie ich es will (Überschreiben/Hinzufügen einzelne Teile des bestehenden Objekts nur dort, wo es im neuen Objekt existiert). Gibt es Randfälle, die ich übersehen habe?
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);
Dies soll (später) zum Zusammenführen von 'gespeicherten Werten' und 'neu erhaltenen' Werten und es macht mir Sorgen, dass ich versehentlich ein Array von Daten, die über 30 Tage gesammelt wurden, mit null/undefined überschreiben könnte, wenn das Skript aus irgendeinem Grund fehlschlägt das 'neue Objekt' mit schlechten Daten), damit Sie darauf antworten können, ob das Empfängerobjekt auch diese haben muss: nicht notwendig arily .. – kwah
Ja, je nach Ihren Bedürfnissen müssen Sie diese dann berücksichtigen. Ich habe "undefined" in meinem Code berücksichtigt, aber nicht "null". – palswim