Referencja na konstruktor

0

Mam taki kod:

function Keeper() {
    this.name = 'Wojciech';
    this.lastname = 'Szczęsny';
    this.alwaysSaves = true;
}

const polishKeeper = new Keeper();

console.log(polishKeeper.__proto__);
console.log(Keeper);

Dlaczego konsola w Firefoxie w pierwszym wypadku wskazuje na obiekt z metodą constructor a w drugim na funkcję?
Czy referencja nie powinna w tym wypadku wskazywać na ten sam obiekt?

0

Jak wskazuje Ci 1 linijka: function Keeper() jest po prostu funkcją. polishKeeper jest instancją utworzoną przez new Keeper()

Funkcja !== instancja

Zwróć uwagę też na to:
polishKeeper.__proto__ === Keeper.prototype
W momencie tworzenia instancji prototype jest przekopiowywane do obiektu polishKeeper do pola __proto__.

0

Ja wiem że Funkcja !== instancja.
Ale wydawało mi się że właściwość .__proto__ instancji powinna wskazywać na obiekt z metodą call - czyli funkcję.

0
adams0 napisał(a):

Dlaczego konsola w Firefoxie w pierwszym wypadku wskazuje na obiekt z metodą constructor a w drugim na funkcję?
Czy referencja nie powinna w tym wypadku wskazywać na ten sam obiekt?

Wszystko jest wyjaśnione tutaj:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new

0

Przeczytane.
Chyba wymyśliłem przykład który mi dobrze zobrazował działanie:

function createPerson(name = 'Joe') {
    this.name = name;
    this.lastname = 'Doe';
}
 createPerson.prototype.saySth = function() {
    console.log('Hello')
}

var joe = new createPerson();
var kevin = new createPerson('Kevin')


console.log(Object.getPrototypeOf(joe).constructor)
console.log(Object.getPrototypeOf(kevin).constructor)
console.log(createPerson)

Czyli mogę w takim razie powiedzieć że gdy używam konstruktora za pierwszym razem to tworzę dwa obiekty:
'joe' i jego prototyp a później już tylko obiekt 'kevin' z prototypem wskazującym na ten sam obiekt co prototyp u 'joe' ?

Czy jest jakaś specjalna właściwość w konstruktorze która mówi czy został on już użyty?

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