TAE live: Stoyan Stefanov - Advanced Javascript
Her starter vi fra Adam og Evan med “Hvad er et objekt i Javascript”, “Hvad er en primitiv type” etc.
Lille ikke-så-kendt trick:
var boo = function bar(foo) {...};
>> boo.name = 'bar'
Nu begynder vi at kigge på objekter og constructors lidt mere i dybden. En god pointe er at bruge constructor literals som [] og {} i stedet for new Array() og new Object().
Prototype er et tomt objekt, der automatisk oprettes som property på nye objekter ved instantiering. Brug hasOwnProperty(..) for at opklare, om en given property tilhører objektet eller objektets prototype. Brug isPrototypeOf(..) for at finde sammenhæng mellem objekter.
Prototypen er delt mellem instanser. Derfor giver det god mening at deklarere funktioner i prototypen, da man så ikke bruger unødigt meget memory.
Nedarvning:
var Dad = function() { .... };
var Kid = function() { ... };
Kid.prototype = new Dad();
“There are no classes in Javascript!”
Nedarvning implementeres ved at modificere prototype-kæden.
Ingen block-scopes men function-scopes.
Alle variable er globale med mindre deklareret med var i en funktion.
“Lokal” variabel:
(function() {
var a=1;
var b=2;
alert(a+b);
})();
Et noget jappet foredrag.