Czy istnieją jakieś metody dołączania obiektu do innego obiektu?Dołączanie obiektów do istniejących obiektów
miałem szybki ukłucie w rzucanie to razem, ale nie jestem pewien, o kilka rzeczy:
Am I obsługi metod poprawnie? Dodałem wyjątek dla dołączenia, ale co z tym, kiedy istnieją inne funkcje prototypowe? Czy powinienem po prostu zignorować funkcje w nowej klasie?
Co należy zrobić o wartościach null/undefined?
Ponadto, właśnie pomyślałem o tablicach .. jaki byłby najlepszy sposób na obsługę tablic? typeof raportach jako „obiektu” .. Chyba, że testowanie Array(). Value konstruktora byłoby rozwiązaniem
Innych niż te kilka kwestii wydaje się działać jak chcę go (nadpisywanie/dodawanie poszczególne części istniejącego obiektu tylko wtedy, gdy istnieje w nowym obiekcie). Czy są jakieś przypadki skrajne, które przeoczyłem?
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);
ten jest przeznaczony (później) do łączenia wartości "przechowywanych wartości" i "nowo uzyskanych" i martwi mnie, że mogę przypadkowo nadpisać zbiór danych zebranych przez ponad 30 dni w a przy null/undefined, jeśli skrypt miałby z jakiegoś powodu wadliwie działać (wypełnianie "nowy obiekt" ze złymi danymi), aby odpowiedzieć na pytanie, czy obiekt odbiorcy musi również mieć takie: nie jest konieczne arily .. – kwah
Tak, w zależności od twoich potrzeb, będziesz musiał je uwzględnić. W moim kodzie uwzględniłem "" undefined ", ale nie" null ". – palswim