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

110 lines
5.3 KiB
Markdown
Raw Normal View History

2017-02-26 13:28:18 +01:00
+++
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
:exclamation: JS **fiddles**: http://jsfiddle.net/user/jefklak/fiddles/
**JS Must watch videos**
[https:*github.com/vjdhama/js-must-watch](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:**
<img style='' src='/img/indexmenu>code/javascript|js context navbar nocookie'>
##### Extern
**Blogs, algemene howtos en nieuws items**
* [http:*dailyjs.com/](http:*dailyjs.com/): A Javascript blog (ook meer NodeJS-oriented)
* [Perfection kills: exploring Javascript by Example](http://perfectionkills.com/)
* [John Resig blog](http://ejohn.org/category/blog/) - de bedenker van jQuery en experimenteur met ECMA5
**Documentatie en in-depth manuals**
* [Mozilla Developer Javascript Reference](https://developer.mozilla.org/en/JavaScript/Reference)
* [Crockford on Javascript](http://yuiblog.com/crockford/) - YUIBlog talks
* [Dougles Crockford's Wrrrld Wide Web](http://www.crockford.com/) met hoop interessante javascript-gerelateerde pagina's!
**Specifieke frameworks/APIs**
* [http:*knockoutjs.com/](http:*knockoutjs.com/): GUI logica loskoppelen van domein logica met knockout *"observables"*
* [CommonsJS](http:*www.commonjs.org/) - Javascript ecosystem for building webservers, desktop apps and more (voorbeeldimplementatie: [node.js](http:*nodejs.org/))
* [http:*jqapi.com/](http:*jqapi.com/) jQuery API buiten officiële website
* [http:*howtonode.org/](http:*howtonode.org/) Tutorials on NodeJS
### Nog uit te pluizen
* - [ ] JavascriptMVC een kans geven
* - [ ] Live.js eens in detail bekijken "ooit"
* - [ ] Coffeescript uitgebreider toepassen
* - [x] Jasmine en een JsTestDriver gebruiken met Maven build
* - [ ] Node.js uitproberen
* - [x] Envjs uitproberen
* - [x] Zien hoe DDD in JS toegepast kan worden: ontkoppeling GUI/Domein logica: Sproutcore/Knockout?
* - [ ] Interne werking Shizzle Selector
* - [x] 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??