to mate mirne casove popleteny, javascript mel objekty vzdy, akorat nebyl class-based (class tam jsou az od nedavna jako doplnek). tzn objekty se tvorily vzdy literalne, NASLEDNE vznikl JSON ktery to ma primo v nazvu "javascript object notation" - dalo by se rici "javascript object creation notation" abychom byli presnejsi.
Nemám to časovo popletené, neviem prečo vznikol taký dojem. To, že JavaScript až do es6 nemal kľúčové slovo class, viem veľmi dobre. Pretože som ho pred vyše 10 rokmi tam márne hľadal, keď som vo firme dostal zadanie spraviť niečo v JavaScripte na frontende. Malo to C syntax, písalo sa o ňom, že je OOP, tak predsa tam to class musí byť. A nebolo. Objekty sa tvorili aj ináč, čo sa mi vrylo do pamäti ako prvé, tak to boli konštruktor funkcie.
// constructor function
function Item(name, maker) {
this.name = name;
this.maker = maker;
this.getInfo = function () {
return `${this.name} - ${this.maker}`
};
}
var item = new Item('IPhone', 'Apple');
console.log(item.getInfo());
Pre mňa bol AHA moment ten, keď som si uvedomil, že sa dajú vytvárať objekty a kolekcie objektov bez definovania tried, getterov a setterov a všektého toho balastu okolo. Pretože rokmi programovania v Jave sa človeku vryje do mozu, že trieda sa definuje pomocou class a objekt vytvorí pomocou new.
const R = require('ramda');
const users = [
{ name: 'John', city: 'London', born: '2001-04-01' },
{ name: 'Lenny', city: 'New York', born: '1997-12-11' },
{ name: 'Andrew', city: 'Boston', born: '1987-02-22' },
{ name: 'Peter', city: 'Prague', born: '1936-03-24' },
{ name: 'Anna', city: 'Bratislava', born: '1973-11-12' },
{ name: 'Albert', city: 'Bratislava', born: '1940-18-19' },
{ name: 'Adam', city: 'Trnava', born:'1983-12-01' },
{ name: 'Robert', city: 'Bratislava', born: '1935-05-15' },
{ name: 'Robert', city: 'Prague', born:'1998-03-14' }
];
let res = R.reject(R.propEq('city', 'Bratislava'))(users);
console.log(res);
let res2 = R.filter(R.propEq('city', 'Bratislava'))(users);
console.log(res2);
No a keď si človek uvedomí nakoniec, že veci sa dajú robiť oveľa jednoduchšie a elegantnejšie, tak precitne. Hore uvedený príklad by v Jave vyžadoval desiatky riadkov kódu navyše. JSON syntax a možnosť funkcionálneho spracovania dát napr. pomocou Ramdy ma na JavaScripte najviac zaujalo.
No a keď sa potom ešte Javista, ktorý má skúsenosť trebárs so Springom pozrie na taký Express, ako sa tam oveľa jednoduchšie nastavujú veci, tak dochádza k paradigm shift.