eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwJavascript - jak tworzyć obiekty w strict mode?
Ilość wypowiedzi w tym wątku: 26

  • 21. Data: 2015-10-03 11:18:12
    Temat: Re: Javascript - jak tworzyć obiekty w strict mode?
    Od: Cezary Tomczyk <c...@g...com>

    W dniu 10/1/2015 o 7:27 PM, Marek pisze:
    [...]

    > Już pokazuję co w "Twoim" podejściu się kłóci.
    > Mamy w klasie bazowej jak i pochodnej tak samo nazwaną zmienną (this.a):
    >
    > function SuperClass(a,b)
    > {
    > this.a=a;
    > this.b=b;
    > }
    >
    > SuperClass.prototype.parametry=function()
    > {
    > console.log("parametry", this.a, this.b);
    > };
    >
    > function SubClass(a,b)
    > {
    > this.a=100;
    > SuperClass.call(this,a,b);
    > }
    >
    > SubClass.prototype=Object.create(SuperClass.prototyp
    e);
    >
    > var obj=new SubClass(20,30);
    > obj.parametry();
    > console.log(obj.a);
    >
    > Otrzymujemy:
    > parametry 20 30
    > 20
    >
    > Spodziewałbym się:
    > parametry 20 30
    > 100
    >
    > Wygląda na to, że zmienne używane w klasie bazowej są:
    > a) publiczne (czego nie chcę, ale mogę to jeszcze przełknąć)

    Użyj WeakMap():

    https://www.nczonline.net/blog/2014/01/21/private-in
    stance-members-with-weakmaps-in-javascript/

    [...]

    --
    Cezary Tomczyk
    http://www.ctomczyk.pl/


  • 22. Data: 2015-10-03 12:17:29
    Temat: Re: Javascript - jak tworzyć obiekty w strict mode?
    Od: Marek <p...@s...com>

    W dniu 2015-10-03 o 11:18, Cezary Tomczyk pisze:

    > Użyj WeakMap():
    >
    > https://www.nczonline.net/blog/2014/01/21/private-in
    stance-members-with-weakmaps-in-javascript/

    Super! Dzięki! :-)

    Najbardziej przydatna z tego informacja to użycie prototypu do "metody"
    w "klasie" zamiast do "klasy". Po drugie zamiast WeakMap można użyć
    bezpośrednich deklaracji zmiennych prywatnych var costam; To bardzo
    dobry trop :-) Dzięki raz jeszcze.


    --
    Pozdrawiam,
    Marek


  • 23. Data: 2015-10-03 12:20:51
    Temat: Re: Javascript - jak tworzyć obiekty w strict mode?
    Od: Marek <p...@s...com>

    Hej,

    Zerknij na rozwiązanie jakie Cezary zaproponował. Wykorzystam sztuczkę w
    stosowaniu prototypów wewnątrz "klasy" ale dotyczących jej
    "konstruktora". Proste i rozwiązuje problem. :-)


  • 24. Data: 2015-10-05 09:33:02
    Temat: Re: Javascript - jak tworzyć obiekty w strict mode?
    Od: n...@t...net.pl

    W dniu sobota, 3 października 2015 12:17:43 UTC+2 użytkownik Marek napisał:
    > W dniu 2015-10-03 o 11:18, Cezary Tomczyk pisze:
    >
    > > Użyj WeakMap():
    > >
    > > https://www.nczonline.net/blog/2014/01/21/private-in
    stance-members-with-weakmaps-in-javascript/
    >
    > Super! Dzięki! :-)
    >
    > Najbardziej przydatna z tego informacja to użycie prototypu do "metody"
    > w "klasie" zamiast do "klasy". Po drugie zamiast WeakMap można użyć
    > bezpośrednich deklaracji zmiennych prywatnych var costam; To bardzo
    > dobry trop :-) Dzięki raz jeszcze.
    >
    >
    > --
    > Pozdrawiam,
    > Marek

    Czyli, że brakowało ci informacji o zasięgu zmiennych
    w funkcjach:


    a=111; // globalna (publiczna) bo na zewnatrz funkcji
    // (ta sama chierarchia dot. funkcji zagnieżdżonych)

    function f1()
    {
    var a=222; // lokalna bo ma "var"
    // a=333; // globalna

    console.log("1. a=",a); // wyświetli - 222



    function f2()
    {
    var a=444; // lokalna
    a=555; // globalna

    console.log("1. a=",a); // wyświetli - 444

    }
    f2();



    }

    console.log("2. a=",a); // przy aktywnym var a=... wyświetli - 111 (czyli
    zewnętrzną),
    // przy nie aktywnych var a=... wyświetli - 555





    A ja myślałem, że chodzi ci o zindywidualizowanie zmiennych globalnych
    wewnątrz funkcji/metod, co uzyskiwałem przekazując jako parametr do funkcji:

    a=111;
    function f1()
    {
    a=222;
    console.log("1. a=",a); // 222

    function f2(a)
    {
    a=333;
    console.log("2. a=",a); // 333
    }
    f2();
    }

    console.log("3. a=",a); // 222



    Czyli f1() obrabia globalną "a" a f2() dostaje to obrobione w f1() "a"
    i następnie przetwarza dalej to globalne ale już zindywidualizowane "a".


    Andrzej.


  • 25. Data: 2015-10-06 17:39:22
    Temat: Re: Javascript - jak tworzyć obiekty w strict mode?
    Od: Marek <p...@s...com>

    W dniu 2015-10-05 o 09:33, n...@t...net.pl pisze:

    >
    > Czyli, że brakowało ci informacji o zasięgu zmiennych
    > w funkcjach:

    Raczej o triku, który pozwoli obejść problem powstawania "dziwnych"
    zmiennych współdzielonych między instancjami a jednocześnie trzymania
    ich jako prywatne "klas". Nie potrafiłem pogodzić jednego z drugim.

    >
    > a=111; // globalna (publiczna) bo na zewnatrz funkcji
    > // (ta sama chierarchia dot. funkcji zagnieżdżonych)
    >
    > function f1()
    > {
    > var a=222; // lokalna bo ma "var"
    > // a=333; // globalna
    > (...)

    To akurat podstawy JS - zupełnie nie o to mi chodziło.

    >
    > A ja myślałem, że chodzi ci o zindywidualizowanie zmiennych globalnych
    > wewnątrz funkcji/metod, co uzyskiwałem przekazując jako parametr do funkcji:

    Nie, może niefortunnie nazwałem "globalnym" ten dziwny zasięg zmiennych.
    Ale nie znam innego słowa bo w instancjach "klas" zachowywały się one
    jak globalne choć w "roocie" aplikacji nie były one widoczne - czyli z
    tego punktu widzenia jako nie-globalne.

    --
    Pozdrawiam,
    Marek


  • 26. Data: 2015-10-08 11:03:46
    Temat: Re: Javascript - jak tworzyć obiekty w strict mode?
    Od: n...@t...net.pl

    W dniu wtorek, 6 października 2015 17:39:39 UTC+2 użytkownik Marek napisał:
    > W dniu 2015-10-05 o 09:33, n...@t...net.pl pisze:
    >
    > >
    > > Czyli, że brakowało ci informacji o zasięgu zmiennych
    > > w funkcjach:
    >
    > Raczej o triku, który pozwoli obejść problem powstawania "dziwnych"
    > zmiennych współdzielonych między instancjami a jednocześnie trzymania
    > ich jako prywatne "klas". Nie potrafiłem pogodzić jednego z drugim.
    >
    > >
    > > a=111; // globalna (publiczna) bo na zewnatrz funkcji
    > > // (ta sama chierarchia dot. funkcji zagnieżdżonych)
    > >
    > > function f1()
    > > {
    > > var a=222; // lokalna bo ma "var"
    > > // a=333; // globalna
    > > (...)
    >
    > To akurat podstawy JS - zupełnie nie o to mi chodziło.
    >
    > >
    > > A ja myślałem, że chodzi ci o zindywidualizowanie zmiennych globalnych
    > > wewnątrz funkcji/metod, co uzyskiwałem przekazując jako parametr do funkcji:
    >
    > Nie, może niefortunnie nazwałem "globalnym" ten dziwny zasięg zmiennych.
    > Ale nie znam innego słowa bo w instancjach "klas" zachowywały się one
    > jak globalne choć w "roocie" aplikacji nie były one widoczne - czyli z
    > tego punktu widzenia jako nie-globalne.
    >
    > --
    > Pozdrawiam,
    > Marek

    Osobiście nie zajmuję się rzeczami, na które nie mam żadnego wpływu.
    Interesuje mnie tylko co daje mi mój kod.

    Andrzej.

strony : 1 . 2 . [ 3 ]


Szukaj w grupach

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: