Tworzę konstruktor, w którym umieszczam metody wyrzucające prywatne zmienne do obiektów:
function Customer(name, ownPin)
{
var ownerName = name,
ownerPin = ownPin;
this.getOwnerName = function()
{
console.log('Owner name is: ', ownerName);
};
this.getOwnerPinCode = function()
{
console.log('Owner PIN code is: ', ownerPin);
}
}
var owner = new Customer('tester', 1234);
owner.getOwnerName();
owner.getOwnerPinCode();
Jest ok, z tym że gdy chcę przesunąć te dwie metody (getOwnerName() i getOwnerPinCode()) z samego konstruktora do łańcucha (wykorzystać dziedziczenie prototypowe) tworzonych obiektów, to nie wiem jak to uczynić.
Customer.prototype.getOwnerPinCode = function()
{
return this.ownerPin;
};
Gdy powyższy kod umieszczę pod konstruktorem, to ani this.ownerPin, ani ownerPin nie są widoczne (są undefined) - co jest w sumie logiczne. Zatem w jaki sposób uzyskać dostęp do tych zmiennych? Metody .call/.bind?
Chodzi mi o to, aby konstruktor obiektu tworzył tylko jego atrybuty, zaś same funkcje (aby oszczędzać pamięć - taki jest chyba tego cel) były doczepione do prototypu. Wtedy wszystkie funkcje będą miały dostęp do prywatnych atrybutów tych obiektów, zaś same funkcje nie będą tworzone wielokrotnie.