Wpis z mikrobloga

Powiedzcie mi Mirki o co tu chodzi?
Napisałem sobie taki skrypt:

console.log('-----------------');
tmpobj = {'first':111,'second':222};
tmpobj1=tmpobj;
console.log(tmpobj);
console.log(tmpobj1);
delete tmpobj['first'];
console.log(tmpobj);
console.log(tmpobj1);
console.log('-----------------');

A otrzymuje coś takiego?

-----------------
Object {first: 111, second: 222}
Object {first: 111, second: 222}
Object {second: 222}
Object {second: 222}
-----------------

Ktoś mi wytłumaczy dlaczego tak jest?
Czy "delete" usuwa wszystkie wystąpienia które są w zmiennych?
Jak mogę w prosty sposób usunąć dany element z konkretnego obiektu?
#pytanie #pytaniedoeksperta #javascript #js #kiciochpyta #informatyka #programowanie
  • 11
@Cronox: Nie znam sie ja javascripcie ale sie wypowiem. Wygląda to jakbyś nie kopiowal, nie zmienna a jedynie tworzył wskaźnik do niej. Jednym słowem masz 1 obiekt nie dwa.
@Cronox problem z referencją. Konkretnie tmpobj1 wskazuje na tmpobj. Musiałbyś sklonować obiekt, ale tego się nie powinno robić.

console.log('-----------------');
tmpobj = {'first':111,'second':222};
tmpobj1=JSON.parse(JSON.stringify(tmpobj));
console.log(tmpobj);
console.log(tmpobj1);
delete tmpobj['first'];
console.log(tmpobj);
console.log(tmpobj1);
console.log('-----------------');