🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #231932

Re: Nikomu niepotrzebne zmienne prywatne?

#231932
From: Wojciech Bancer
Date: Sun, 28 Jan 2018 21:01
57 lines
3248 bytes
On 2018-01-28, Marek S <precz@spamowi.com> wrote:

[...]

>> Nie zachowuje się. To tylko tzw. syntax sugar.
>
> Ok, skąd czerpiesz tą wiedzę?

Z internetu i przemyśleń własnych :)
Np. z MDNa.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

"JavaScript classes, introduced in ECMAScript 2015, are primarily syntactical-
sugar over JavaScript's existing prototype-based inheritance. The class syntax-
does not introduce a new object-oriented inheritance model to JavaScript."

Czy:
https://stackoverflow.com/questions/36419713/are-es6-classes-just-syntactic-sugar-for-the-prototypal-pattern-in-javascript/36419728
oraz z faktu, że nie mamy pojęcia klasy per se, tylko wszystko jest nadal 
oparte o prototypy.

[...]

> "...ECMAScript 5 wiele bibliotek dostarczało
> narzędzia, dzięki którym mogło się wydawać, że JavaScript obsługuje 
> klasy."

Wydawać? Obsługuje, po prostu w inny sposób (prototype inheritance
vs class inheritance), np:

https://medium.com/javascript-scene/master-the-javascript-interview-what-s-the-difference-between-class-prototypal-inheritance-e4cd0a7562e9

> Wprawdzie pewna część programistów była mocno przekonana, że 
> język nie potrzebuje klas, ale ilość utworzonych bibliotek 
> przeznaczonych do obsługi klas spowodowała dołączenie klas w 
> specyfikacji ECMAScript 6."

Czyli dodali syntax sugar.

> Skąd zatem takie wypowiedzi? Autor książki nie ma bladego pojęcia o 
> świecie więc sobie coś palnął ot tak?

Czemu mnie pytasz?

>> Rectangle.prototype.constructor = Rectangle;
>
> Ponoć właśnie nie do końca. Funkcjonalnie w ES5 owszem. Ale w ES6 i w 
> klasach nie da się tego przeprowadzić bo prototype klas jest read only.
> Ponoć w tym kierunku będzie rozwój JS prowadzony.

Czego się nie da przeprowadzić? Wykonać kodu powyżej np. na node 8?
Da się. Nie da się wywołać konstruktora "klasy" jak zauwazyłeś, ale
to nadal jest jedynie syntax sugar.

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com
Technical Details
Message-ID: <slrnp6segp.1bij.wojciech.bancer@pl-test.org>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <p4dakb$a6j$1@node2.news.atman.pl> <ll7vozvk24nr.sp52w7f4aisx.dlg@40tude.net> <p4klfl$4gq$1@node1.news.atman.pl> <slrnp6rq5p.14c5.wojciech.bancer@pl-test.org> <p4l8lo$n3s$1@node1.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Newsgroups: pl.comp.lang.php
From: Wojciech Bancer <wojciech.bancer@gmail.com>
Subject: Re: Nikomu niepotrzebne zmienne prywatne?
References: <p4dakb$a6j$1@node2.news.atman.pl> <ll7vozvk24nr.sp52w7f4aisx.dlg@40tude.net> <p4klfl$4gq$1@node1.news.atman.pl> <slrnp6rq5p.14c5.wojciech.bancer@pl-test.org> <p4l8lo$n3s$1@node1.news.atman.pl>
Organization: None
Date: Sun, 28 Jan 2018 22:01:12 +0100
User-Agent: slrn/1.0.3 (Darwin)
Mime-Version: 1.0
Message-ID: <slrnp6segp.1bij.wojciech.bancer@pl-test.org>
Lines: 57
NNTP-Posting-Host: 37.47.128.20
X-Trace: 1517173273 unt-rea-a-01.news.neostrada.pl 673 37.47.128.20:21480
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Body-CRC: 2172423661
X-Received-Bytes: 3076
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit