🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Marek Mon, 21 Sep 2015 11:43
JavaScript - jak działają prototypy?
#408321
Author: Marek
Date: Mon, 21 Sep 2015 11:43
54 lines
1930 bytes
Witam,

Czytałem w wielu miejscach teorie na ten temat lecz nigdzie temat nie 
był potraktowany na tyle wyczerpująco abym mógł to pojąć. Nawet po 
dłuższym czasie posługiwania się nimi na zasadzie "zrób tak, bo ktoś tak 
zrobił" odkrywam powalające mnie na kolana, niezrozumiałe właściwości. 
Proszę znawcę tematu o wyjaśnienie mi zasadę ich działania "jak chłop 
krowie".

Oto przypadek, który ostatnio mnie "zastrzelił".

testClass(_data)
     {
     var data=_data;

     testClass.prototype.read=function()
         {
         console.log("read",data);
         };
     }

aaa=new testClass(10);
aaa.read();
bbb=new testClass(20);
aaa.read();

daje wynik
10
20

Zamiast spodziewanego 10, 10. Czyli wynika z tego, ze data nie jest 
zmienną lokalną dla instancji obiektu lecz jest współdzielona miedzy 
nimi. A teraz uwaga! Zmieniam kod w innym miejscu niż obszar zmiennej:

testClass(_data)
     {
     var data=_data;

     this.read=function()
         {
         console.log("read",data);
         };
     }

... i otrzymuję wynik:

10
10

WTF? O co tu chodzi?

-- 
Pozdrawiam,
Marek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads