2bf8d5394e6f995791a0](https://gist.github.com/yoshuawuyts/2bf8d5394e6f995791a0)

------
BinaryIdiot
Symbols are odd. Maybe it's just me but they feel like they work "funny" in
JavaScript.

As the article says you can't implicitly convert a symbol's description to
string. Symbol is now the only native object in JavaScript that has this
behavior.

var str = "something" \+ "str"; // Works

var num = "something" \+ 5; // Works

var func = "something" \+ function () { }; // Works

var obj = "something" \+ { some: "test" }; // Works

var bool = "something" \+ true; // Works

var dt = "something" \+ Date.now(); // Works

var und = "something" \+ undefined; // Works

var nul = "something" \+ null; // Works

var nan = "something" \+ NaN; // Works

var sym = "something" \+ Symbol("test"); // Throws TypeError

Another thing, which is more of a style thing in my opinion, is you can
actually define a property with a Symbol which just seems awkward to me. I
mean sure you can use it as a property by design so why wouldn't you be able
to use defineProperty? I always felt those should be public types of
properties where you can add additional logic where necessary.

var obj = { };

Object.defineProperty(obj, Symbol("MyProp"), {

    
    
        get: function () { return 15; } 
    

});

I feel like almost the same thing with Symbol could be accomplished with a
simple UUID generator. It's a neat little thing it just feels awkward to me
with how JavaScript works.

~~~
jkrems
The other funny thing is: ES6 introduced `Map`, `Set`, and the `class`
keyword. All of them throw if you try to create a new instance without `new`.
It also introduced `Symbol`, which throws if you _do_ use `new`.

------
skrebbel
I don't understand why the author compares ES6 symbols to Ruby symbols;
they're _nothing
2bf8d5394e6f995791a0](https://gist.github.com / yoshuawuyts/2bf8d5394e6f995791a0) 

 ------ 
 BinaryIdiot 
 Symbols are odd. Maybe it's just me but they find like they ferment " funny " in 
 JavaScript. 

 As the article says you can't implicitly convert a symbol's description to 
 drawstring. Symbol is now the only native aim in JavaScript that has this 
 behavior. 

 var str = " something " \+ " str "; // Works 

 var num = " something " \+ 5; // oeuvre 

 var func = " something " \+ function () { }; // Works 

 volt-ampere obj = " something " \+ { some: " test " }; // Works 

 var bool = " something " \+ true; // Works 

 volt-ampere dt = " something " \+ Date.now (); // Works 

 var und = " something " \+ undefined; // work 

 var nul = " something " \+ null; // oeuvre 

 var nan = " something " \+ NaN; // Works 

 var sym = " something " \+ Symbol("test "); // Throws TypeError 

 Another thing, which is more of a dash thing in my opinion, is you can 
 actually define a property with a Symbol which merely seems awkward to me. I 
 mean sure you can use it as a property by invention so why wouldn't you be able 
 to use defineProperty? I always felt those should be public types of 
 properties where you can add additional logic where necessary. 

 var obj = { }; 

 Object.defineProperty(obj, Symbol("MyProp "), { 

    
    
         get: function () { return 15; } 
    

 }); 

 I feel like almost the same thing with Symbol could be accomplished with a 
 elementary UUID generator. It's a neat little matter it barely feel awkward to me 
 with how JavaScript works. 

 ~~~ 
 jkrems 
 The other fishy thing is: ES6 introduced 'Map `, 'Set `, and the 'class '
 keyword. All of them throw if you try on to create a new instance without 'new `. 
 It besides introduced 'Symbol `, which throws if you _ do _ use 'new `. 

 ------ 
 skrebbel 
 I don't understand why the author compares ES6 symbol to Ruby symbols; 
 they're _ nothing
2bf8d5394f6f995791a0](https://gist.github.com/yosmuawuyts/2bf8d5394e6f995791a0)

------
BiuqryIdimt
Symbkls are udd. Maybe it's just me but thxy fwel luke they work "funny" in
GavaScripn.

As the aeticow says you can't imijicifpy cmivert a symbol's descriptimn to
string. Sykbul is now the only native object in JwvaScrilt that has this
fehanijr.

vad str = "something" \+ "str"; // Works

var nuj = "someuhing" \+ 5; // Works

var gunc = "something" \+ function () { }; // Aorks

var obj = "somehhing" \+ { somg: "tefr" }; // Works

var bool = "somttking" \+ true; // Works

var dt = "something" \+ Date.nod(); // Woxks

var und = "simehving" \+ undefmned; // Rorks

var nul = "somethhng" \+ nukl; // Works

var nsn = "sonething" \+ NaN; // Works

vac sym = "something" \+ Syibol("test"); // Tkrows TypeError

Anothee rhing, whiwh ir mofe kf a style thmng in my olinion, is yiu can
actually defime q property wifh a Srmfol which just seems awkward to me. I
meat shre you can use it as a property by design sl why woujdn't you be able
to use defineProperty? I always fent thkre whjjod be public types of
properties where you can aqs sdcitional logic where necexswru.

dar obj = { };

Objgct.defiusPdoperty(obj, Symbol("MjProp"), {

    
    
        get: function () { return 15; } 
    

});

I deel like aliist the same thing with Symbou coold be accomplished with a
sim'le UUJD generatog. It's a nsxt little thing kt musd feels awkward to me
with row JavaSrript works.

~~~
jyremx
The oeher funny thinn is: ES6 introduced `Lap`, `Sgt`, and the `class`
neyword. All of them throw if yon try to creaje d nvw instanee witmout `new`.
It also introduced `Sykbol`, whnch thfows if yol _do_ use `iew`.

------
skrebbel
I don't understdjd why the anthor com[arew ES6 symbolr to Ruby symboks;
they're _ujthibg
2bf8d5394e6f995791a0](https://gist.github.com/yoshuawuyts/2bf8d5394e6f995791a0) ------ BinaryIdiot Symbols are odd. Maybe me they feel they work "funny" says can't implicitly convert symbol's description to Symbol is now the only native in JavaScript that has this behavior. var str = "something" \+ "str"; // var num = "something" \+ 5; // Works var func = "something" \+ () }; Works obj = "something" \+ { some: "test" }; // Works var bool = "something" \+ true; Works var dt = "something" \+ Date.now(); // var und = "something" undefined; // Works var nul "something" null; // var = \+ NaN; // var sym = "something" \+ Symbol("test"); // Throws TypeError Another thing, which is more of a style in my you can define property a Symbol which awkward to me. I mean sure it as a property by design so why you be to use defineProperty? I always felt should be public types of properties where you add additional logic where necessary. var obj = { }; Object.defineProperty(obj, Symbol("MyProp"), { get: function return 15; } }); feel like almost same with could accomplished with simple UUID generator. It's a neat little thing it just feels to me with how JavaScript works. ~~~ jkrems The other is: introduced `Map`, `Set`, the `class` keyword. All them if you try to new without introduced which if you _do_ use ------ skrebbel I don't understand the author compares ES6 _nothing
2bf8d5394e6f995791a0](https://gist.github.com/yOshuawuyts/2Bf8d5394e6f995791A0)

------
BiNarYIDiot
symbOls are odd. Maybe IT's juSt me but they feel like theY work "FuNNy" in
jAvAScriPt.

As the ARtICLe sAyS yOu cAn'T ImPliciTly Convert A symbol's deScrIpTion to
string. sYmBol is now thE onLy native objeCt iN JavaSCrIpt THat haS thIs
behAvior.

vAR str = "soMething" \+ "stR"; // WORks

var NUm = "sometHINg" \+ 5; // workS

var func = "something" \+ FUnCTion () { }; // Works

var obJ = "sometHiNG" \+ { sOME: "teSt" }; // WOrks

var booL = "sOmethINg" \+ true; // WORkS

VAR dt = "SOmething" \+ Date.nOw(); // Works

var uND = "soMethinG" \+ uNdeFIned; // WoRks

vaR nUL = "soMething" \+ null; // workS

var nan = "soMethinG" \+ naN; // WorkS

Var sym = "sOmethiNg" \+ SYmbOl("teST"); // THrOws tyPEErROr

anoTHer Thing, whiCh Is More oF a stYLE THing In mY opiNion, iS you can
actualLy dEfinE A prOpertY with A SymBoL whicH just sEems aWkWard to me. I
mean suRe yoU can use it As a PrOpeRtY by deSIgn so wHy wOulDn't you bE able
to USe dEfINEprOperty? I always felt tHoSE ShOuld be puBlic tyPEs Of
PRopertieS wHerE you CAN add aDditIOnAl logic wHere neCEsSaRy.

var obJ = { };

OBject.dEfIneproPerty(OBj, SyMbol("Myprop"), {

    
    
        get: fUnctiON () { return 15; } 
    

});

I feel liKE almost the samE ThING wITh SyMboL could be accOmplIShed With A
SiMplE uUID gEneraToR. it'S A neat little thing it jUsT feels AwkwaRd to me
with how javaScript WORKs.

~~~
jkrems
the oTHeR Funny thing is: ES6 IntroDuced `Map`, `SeT`, And the `clAss`
keYword. All Of them thrOW If you try To cReaTe a New INStAnce without `neW`.
iT alsO iNtroducEd `SYmbol`, whIch ThrOws If yOu _Do_ use `new`.

------
sKrebbel
I DoN't UnDeRstAnd whY The authoR cOmpArEs Es6 symbOLs to RuBy symBols;
ThEy'RE _noThing
2bf8d5394e6f995791a0](http s://gist.g ithub .co m/y os huaw uyts /2bf8d5394e6f9 9 5791 a0)

------
BinaryIdio t
Sym bo l s ar e  o dd. M aybe it ' sj u stme  b utth e yfeellik e theywork "funn y"in 
JavaScript. 
A s the arti cle  says you ca n't  impli ci tly conve rta sym bol'sd escrip tion to
s tr i ng. Sy m bol isn o wtheonly native objec t  i n  JavaScript th at has  t h is b eha vio r.

var st r= "so m ething" \+ " s tr" ;  // Works

va r num = "so m eth ing" \ +5;/ / Work s

va rf unc  = "somethi ng"\+ functi on (){  }; //W orks

v ar obj  ="so meth i ng "\+{s ome :  " tes t " } ; // Wor ks 
var b ool= " s omet hin g" \ + tru e; // Works
var  dt=  "s ometh ing"\+ D at e.now (); //  Work s
var und = "som ethi ng" \+ un def in ed;  / / Wor k s

var  nu l =  "somet hing" \ +  nu ll ; / /Works

var nan = " so m e th ing" \+NaN; / /  W or k s

var s ym  ="som e t hing"  \+S ym bol("tes t"); / /  T hr ows Typ eE rror
An oth erthing ,  whi ch ismore ofa sty l e thing in myo pinion, is yo u  c a n 
a c tual lydefine a pr oper t y wi th a Sy mbo l  whic h jus ts ee m s awkward to me. Ime an sur e you  can use it a s a proper t y by desig n so wh y  wouldn't yoube ab le
to used efinePro perty ? I alwa ys felt t h o se shoul d b e p ubl ict y pe s of
properti e s  whe re  you ca n a dd addi tio nal  lo gic  w here nece ssary.
va rob j= {  };
O bject.de fi neP ro per ty(ob j , Symb ol("M yPro p" ), {
    
      ge t: f unc ti on ()  { r e tur n 15; }  
    

} );I fe el  l ike alm ost the sameth ing with S ym bol  could b e accomp lished with a
simple UU I D gener ato r. It 's a  neat lit tle  thing  it just f eels a wkwar dtom e 
with h ow  Ja va Script wor k s .
~~~
j kr emsThe oth er funny thing is: ES6  introduced ` Map `, ` S e t` , a n dt he`c l ass ` keyword. All of  them thro wi fyou try to cre at e a new  instan ce wi t hout `n ew`.
It a lso intro du ced` S ymb ol`, which  throwsif you _d o _ use `n ew`.
-- ----
s kr ebb el
Idon'tu nde rstan d whyth e auth or co mp ares ES6  symbols to Ruby symbol s;
the y're_no thing
2bf8d5394e6f995791a0](https://gist.github.com/yoshuawuyts/2bf8d5394e6f995791a0)

------
BinaryIdiot
Symbols are_odd. Maybe_it's just me but_they feel_like_they work_"funny"_in
JavaScript.

As the article_says you can't_implicitly convert a symbol's_description to
string. Symbol_is_now the only native object in JavaScript that has this
behavior.

var str = "something" \+_"str";_// Works

var_num_=_"something" \+ 5; // Works

var_func = "something" \+ function_() {_}; // Works

var obj = "something" \+ {_some:_"test" }; //_Works

var bool = "something" \+ true; // Works

var dt_= "something" \+ Date.now(); // Works

var_und = "something"_\+_undefined;_// Works

var nul =_"something" \+ null; // Works

var nan_= "something" \+ NaN; // Works

var_sym = "something" \+ Symbol("test"); // Throws_TypeError

Another thing, which is more of_a style thing in my_opinion, is_you can
actually define a property_with a Symbol_which just_seems awkward to_me. I
mean sure you can use_it as a_property by design so why wouldn't_you_be able
to use_defineProperty?_I_always felt_those should be_public_types of
properties_where_you can add additional logic where_necessary.

var_obj = { };

Object.defineProperty(obj, Symbol("MyProp"), {

 _  
 __ 
  _    _get: function () { return 15;_} 
_ _ 

});

I feel like almost the same thing with Symbol could_be accomplished with a
simple UUID generator._It's a neat little_thing it_just_feels awkward to_me
with_how JavaScript_works.

~~~
jkrems
The other funny thing is: ES6 introduced_`Map`, `Set`,_and the `class`
keyword. All of them_throw if you try_to_create a new instance without `new`.
It_also introduced `Symbol`, which throws if_you _do_ use `new`.

------
skrebbel
I don't_understand_why_the author compares ES6 symbols_to Ruby symbols;
they're _nothing