Whoever told you this couldn't be done was lying.
By utilising closures we can create a class that holds its own private members which cannot be accessed outside of that class - even by adding a new function onto the class
Consider the following javascript function
function Outer()
{
var PrivateVar='PrivateValue';
function Inner()
{
PrivateVar='Some Value';
}
}
This is known as a closure.
You can read more about them here:
http://stackoverflow.com/questions/111102/how-do-javascript-closures-work
Put simply the inner function has access to the variables in the outer function.
These variables are "live" - that is they are not fixed when the inner function was created.
Now consider that the Outer and Inner functions are, in fact, constructors
function MyClassWithPrivateVars(params)
{
var PrivateVar;
function MyClass(params)
{
PrivateVar='Initial Value';
}
return new MyClass(params);
}
var Instance = new MyClassWithPrivateVars('whatever');
When you call the outer constructor you are actually calling the inner constructor.
The inner constructor has access to the vars within the outer constructor as before.
Let's add a method to the inner constructor.
This new method of course has access to the variables in the outer constructor.
In this instance the method is a "property".
function MyClassWithPrivateVars(params)
{
var PrivateVar;
function MyClass(params)
{
PrivateVar='Initial Value';
this.PublicProperty = function(value)
{
if (typeof(value)!=="undefined")
{
PrivateVar=value;
}
return PrivateVar;
}
}
return new MyClass();
}
Now if we create an instance of MyClassWithPrivateVars
and invoke the property we'll see that it gets the value as expected.
var MyInstance=new MyClassWithPrivateVars();
console.log(MyInstance.PublicProperty());
Outputs "Initial Value"
because the private variable was set to that value in the constructor.
MyInstance.PublicProperty(10);
console.log(MyInstance.PublicProperty());
This time we get 10
So is the variable really private?
Well - let's try and access it directly:
console.log(MyInstance.PrivateVar);
This should output undefined
as PrivateVar is not a member of the inner class.
Likewise
console.log(MyClassWithPrivateVars.PrivateVar);
is also undefined because PrivateVar is a member of the instance of the outer class - not of the constructor itself.
This is an interesting blog that you have posted,Good job.
ReplyDeleteHtml5 Training in Chennai
DOT NET Training in Chennai
c# training in chennai
dot net classes in chennai
mvc training in chennai
Best DOT NET Training institute in Chennai
QTP Training in Chennai
LoadRunner Training in Chennai
Its a wonderful post and very helpful, thanks for all this information. You are including better information regarding this topic in an effective way. T hank you so much.
ReplyDeleteDot Net Training in Chennai | Dot Net Training in anna nagar | Dot Net Training in omr | Dot Net Training in porur | Dot Net Training in tambaram | Dot Net Training in velachery
trendyol indirim kodu
ReplyDeletecami avizesi
cami avizeleri
avize cami
no deposit bonus forex 2021
takipçi satın al
takipçi satın al
takipçi satın al
takipcialdim.com/tiktok-takipci-satin-al/
instagram beğeni satın al
instagram beğeni satın al
btcturk
tiktok izlenme satın al
sms onay
youtube izlenme satın al
no deposit bonus forex 2021
tiktok jeton hilesi
tiktok beğeni satın al
binance
takipçi satın al
uc satın al
sms onay
sms onay
tiktok takipçi satın al
tiktok beğeni satın al
twitter takipçi satın al
trend topic satın al
youtube abone satın al
instagram beğeni satın al
tiktok beğeni satın al
twitter takipçi satın al
trend topic satın al
youtube abone satın al
takipcialdim.com/instagram-begeni-satin-al/
perde modelleri
instagram takipçi satın al
instagram takipçi satın al
takipçi satın al
instagram takipçi satın al
betboo
marsbahis
mmorpg oyunlar
ReplyDeleteinstagram takipçi satın al
tiktok jeton hilesi
TİKTOK JETON HİLESİ
Saç ekim antalya
Referans Kimliği Nedir
instagram takipçi satın al
Mt2 Pvp Serverler
Instagram takipçi satin al
tül perde modelleri
ReplyDeleteNumara onay
turkcell mobil ödeme bozdurma
Nft nasil alınır
ankara evden eve nakliyat
trafik sigortası
dedektör
web sitesi kurmak
aşk kitapları
smm panel
ReplyDeletesmm panel
iş ilanları
İNSTAGRAM TAKİPÇİ SATIN AL
hirdavatciburada.com
Https://www.beyazesyateknikservisi.com.tr/
Servis
Tiktok Para Hilesi İndir
Pakistan Independence Day Quotes — Pakistan will remain free, free from every obstruction only if it remains to be the land of the brave. Happy Independence Day Pakistan Wishes SMS In English
ReplyDelete