Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 2572
Hei folkens.


Jeg har bare et kjapt spørsmål.
Nå er det sånn at jeg skal lære litt mer grunnleggende i JavaScript nå når jeg har lært veldig avansert php, html og css i 3 mnd i jobb.

Jeg har gått igjennom Codecademy ganske mange ganger, og dette er greit.
Men så sa en på jobben at jeg kunne gå igjennom freecodecamp.org.

Gjorde så det og merket STORE forskjeller på skriving av kode.


f.eks er jeg vandt til å skrive:

Kode

let bob = new Object();
Men i f.eks freecodecamp så skriver de:

Kode

let bob = Object.create(Human.prototype);

Jeg har ikke vært borti noen som bruker prototype i JavaScript her på jobb eller andre læringsplatformer.

Ser også at på freecodecamp så bruker de:

Kode

function Human() {}

Human.prototype = {
  constructor: Human,
  eat: function() {
     console.log("nom nom nom");
  }
};

For eksempel.

Er det noen forskjell her? Freecodecamp sier at å IKKE bruke :

Kode

let bob = Object.create(Human.prototype);
De mener at hvis man ikke bruker object og prototype får man problemer i "Inheritance".

Noen formeninger om hva som er "normen" å bruke her? Er det egentlig noen som lager objekter med prototype?
Arv i eldre js-versjoner må være noe av det verste man kan utsette seg selv for som programmerer. Nå er det vanligere å bruke en nyere standard som har ordentlig støtte for klasser og arv og så legge inn et bygg-steg som skriver om koden til eldre syntaks. Hvis du skal jobbe med større prosjekter vil jeg anbefale det.

Men for å svare på spørsmålet ditt, så har jeg aldri opplevd noen problemer med å bruke konstruktører direkte, altså new Human().
Takk lor3ntz.
Så det å bruke prototype etc som på freecodecamp er den "gamle" metoden å gjøre ting på?
Ja, ta en titt på https://developer.mozilla.org/en-US/...erence/Classes. Hvis du skal støtte eldre browsere må koden oversettes til gammel syntaks f.eks vha babel.js.
Limited edition
Moff's Avatar
Du "kan" få problemer med inheritance slik de sier, men jeg ville ikke bekymret meg så mye for det. Prototyper i JavaScript er en mekanisme som du kan bruke for å simulere klasser og arv, selv om JavaScript i seg selv egentlig ikke har ekte klasser. Hvert "objekt" man lager har en prototype, og prototypen kan også ha sin egen prototype. Dette er det vi kaller en prototype-chain, og når du kaller en funksjon eller en variabel på et objekt, så kan du risikere at verdien du får tilbake tilhører en av prototypene, ikke det objektet du faktisk jobber på. Jeg har vært borti problemstillinger knyttet til dette mange ganger, men veien ut av det er som regel ganske enkel. Løsningen på problemet kommer selvsagt veldig an på hva det er du prøver å lage, så det kan du evt. lage en ny tråd for hvis du setter deg fast.

Generelt så opplever i alle fall jeg det sånn at hvis du støter på problemer som er så avanserte og innviklede at du sliter med å løse dem med helt elementær JavaScript, så er det sannsynligvis en god idé å skrive om koden din slik at problemet løses back-end, og ting fortsetter å være enkelt i front-end (JavaScript). Du klarer å løse det aller meste i JavaScript nå om dagen, men fordi det er nettleseren som kjører koden, så har du ingen kontroll på hvilke funksjoner som virker og hvilke som ikke gjør det. Prøv derfor å gjøre så mye du kan back-end, hvor du kan kontrollere alt sammen.

Et annet hett tips som også er nevnt ovenfor er å finne seg gode rammeverk for JavaScript, fordi de i stor grad vil sørge for at de funksjonene du bruker fungerer like bra i alle nettlesere. Jeg støtter meg for eksempel mye på JQuery (selv om det stadig vekk blir betraktet som avleggs). Du sparer ikke nødvendigvis så mye tid eller kode på å bruke det, men det er en viss trygghet i å vite at ting garantert fungerer.
Takk for gode svar.

Nå vil jeg egentlig helst inn i JavaScript vanilla og ta rammeverk etter dette.
Har vært en del borti AngularJS og React, men kommer ikke til å holde noe mer på med det før jeg evt har lært vanlig JavaScript vanilla først.
▼ ... noen uker senere ... ▼
Rammeverk or nah så må du fortsatt skrive vanilla-kode i det språket rammeverket er bygd for.
Kan varmt anbefale vue.js, selv om ikke alle er enige.