eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwJavaScript - jak działają prototypy? › JavaScript - jak działają prototypy?
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
    From: Marek <p...@s...com>
    Newsgroups: pl.comp.www
    Subject: JavaScript - jak działają prototypy?
    Date: Mon, 21 Sep 2015 13:43:50 +0200
    Organization: ICM, Uniwersytet Warszawski
    Lines: 54
    Message-ID: <mtoqho$73l$1@news.icm.edu.pl>
    NNTP-Posting-Host: 89-69-222-145.dynamic.chello.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.icm.edu.pl 1442835832 7285 89.69.222.145 (21 Sep 2015 11:43:52 GMT)
    X-Complaints-To: u...@n...icm.edu.pl
    NNTP-Posting-Date: Mon, 21 Sep 2015 11:43:52 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101
    Thunderbird/31.6.0
    Xref: news-archive.icm.edu.pl pl.comp.www:403027
    [ ukryj nagłówki ]

    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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: