-
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.


do góry
Deweloperzy hamują sprzedaż mieszkań, ale nie podnoszą cen