brainbaking/content/wiki/code/javascript/index.md

5.3 KiB

+++ title = "home" draft = false tags = [ "code", "javascript", "home" ] date = "2014-07-29" +++

Javascript

Use functions to guard your scope and optimize encapsulation, gentlemen!

JS in één-twéé-drié:

https://docs.google.com/present/edit?id######0AXaRvIf-WHu3ZGRjNnFnN2pfMmM3ajVmdjN0&hlen&authkey=COqTqcsL

JS fiddles: http://jsfiddle.net/user/jefklak/fiddles/

JS Must watch videos

https:*github.com/vjdhama/js-must-watch

Inhoudsopgave

Om [Prototypal Inheritance]({{< relref "wiki/code/javascript/inheritance.md" >}}) te kunnen begrijpen, moeten eerst een aantal andere zaken duidelijk worden.

  1. De basislegging van Javascript versus klassieke class-based OO systemen: 1. Hoe werken function referenties en declaraties 2. Functies en objecten in functies steken om klassen te emuleren:
    1. Er is geen verschil tussen functies en variabelen, het zijn allemaal key/value pairs ("first-class citizens")
    2. De delete operator gebruiken om een key te verwijderen uit een object 3. Closures als functies definiëren 4. Constructors als functies definiëren
  2. Het aanroepen van functies: 1. De werking van de this operator, functies zijn pas gebonden als ze aangeroepen worden! ("methods" ((een method is altijd gebonden aan een instance, een functie niet)) bestaan niet) 2. Aanroeping door middel van call (vararg) en apply (array arg) en de verandering van this 3. Via string evaluatie met eval
  3. de interne werking van de new operator
  4. Inheritance opbouwen afhankelijk van de prototype property
  5. Inheritance afchecken met instanceof, het verschil tussen dat en typeof kennen
  6. Mixins kunnen gebruiken in JS met: 1. Doen alsof de constructor van een parent object wordt aangeroepen 2. Direct bepaalde functie referenties overkopiëren met prototype 3. De limitaties hiervan kennen (échte multiple inheritance bestaat niet)

Referenties

Nog te bekijken boeken
  • {{< lib "Test Driven Javascript Development" >}}
  • {{< lib "High Performance Javascript" >}}
  • {{< lib "Javascript Patterns" >}}
Intern
  • [inleiding]({{< relref "inleiding.md" >}}) bevat: constructor functies, this en delete keywords, closures en AOP in JS
  • [inheritance]({{< relref "inheritance.md" >}}) bevat: new, typeof en instanceof keyword, inheritance via prototype, mixins gebruiken en multiple inheritance faken
  • [frameworks]({{< relref "frameworks.md" >}}) bevat: uitleg hoe interne werking van Prototype JS Object.Extend werkt, verschillen tussen jQuery en Prototype JS
  • [snippets]({{< relref "snippets.md" >}}) bevat: herbruikbare stukken JS code
  • [scoping]({{< relref "scoping.md" >}})
  • [magic properties]({{< relref "magic_properties.md" >}}) beschikbaar in de console, in Firefox, of in Javascript 1.8.5 (ECMA impl. V5)
  • [troubleshooting]({{< relref "troubleshooting.md" >}}) in verschillende browsers
  • [performance]({{< relref "performance.md" >}}) (dynamic script loading etc)
  • [testing]({{< relref "testing.md" >}}) en automatisatie in CI omgevingen
  • [serverside]({{< relref "serverside.md" >}}) Javascript parsing en implementaties
  • [pitfalls]({{< relref "pitfalls.md" >}}) bevat het leukste deel van eender welke taal bijleren!!
  • [async]({{< relref "async.md" >}}) blocks schrijven, integratie testen met async blocks etc

Volledige inhoudsopgave:

Extern

Blogs, algemene howtos en nieuws items

Documentatie en in-depth manuals

Specifieke frameworks/APIs

Nog uit te pluizen

    • JavascriptMVC een kans geven
    • Live.js eens in detail bekijken "ooit"
    • Coffeescript uitgebreider toepassen
    • Jasmine en een JsTestDriver gebruiken met Maven build
    • Node.js uitproberen
    • Envjs uitproberen
    • Zien hoe DDD in JS toegepast kan worden: ontkoppeling GUI/Domein logica: Sproutcore/Knockout?
    • Interne werking Shizzle Selector
    • Volgorde van inladen scripts, gedrag bij dynamische script tags in DOM tree
    • Garbarge collection details
    • :checked van jQuery werkt precies niet 100% in envJS - .click() wel. Hoe komt dat??