Dziwna wartość atrybutu po wywolaniu konstruktora

0

Dlaczego po wywołaniu konstruktora klasy Pandemia, wartość mojego atrybutu obiektu __bec __to nazwa klasy, a nie wartość Kakaowy??

 
      function Pandemia(name) {
          console.log('Tworze obiekt: ');
          this.name = name
      };
            
     var cec = new Pandemia('Kakaowy');
     console.log(cec.name); --> Kakaowy
     bec = cec.constructor;
    console.log(' >> ' +bec.name); --> Pandemia
0

Ok, a spróbuj taki kod:

function absda(){}
console.log("<<", absda.name);  // -- > absda

Sądząc po dokumentacji: https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Function Parametr name z funkcji zwraca jego nazwę.
Czyli tak naprawdę wczytałeś parametr name z konstruktora, a nie z obiektu za jego utworzonego.
Nie jestem pewien co chcesz zrobić ale tak powinno być ok

bec = cec.constructor;
var hec = new bec("nowa nazwa");
console.log(' >> ' + hec.name);

Klonowanie obiektów w javascript nie jest wcale tak proste jak się wydaje i jeżeli to chciałeś uzyskać to musisz sam poszukać :(

Z ciekawostek, sprawdź co zwraca length wywołane na funkcji w javascript. Fajna spraw :)

0

@Zellus Klonowanie obiektów jest akurat dosyć proste:

const cloned = Object.assign({}, sourceObject);

// + ewentualnie jeśli zależy nam na prawidłowym lańcuchu prototypów
cloned.__proto__ = sourceObject.__proto__;

Można to też oczywiście zamknąć w funkcji:

const cloneObject = (sourceObject) => {
  const cloned = Object.assign({}, sourceObject);
  cloned.__proto__ = sourceObject.__proto__;
  return cloned;
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1