Module Pattern - används för namespacing
const ModuleName = (function(){
return {
moduleFunction: function(){
console.log('I am a function inside of an object, nothing more.');
}
}
})();
ModuleName.moduleFunction();
Namespacing any serious script or application is critical as it's important to safeguard our code from breaking in the event of another script on the page using the same variable or method names we are.Ref: Namespacing Patterns
Lagrar variabler i en closure så att de blir "privata"
const DwarvesModel = (function(){
let dwarves = ['Toker', 'Blyger','Trötter', 'Prosit','Kloker', 'Butter','Glader'];
return {
getDwarves: function(){
return dwarves;
},
clearDwarves: function(){
dwarves = [];
}
}
})();
Skapa en Objekt Literal
const anObject = {}
Ett "vanligt" objekt som sparas i variablen anObject
Duger bra i många scenarion
Constructor Call
function Taco(topping, bread){
this.topping = topping;
this.bread = bread;
}
let aNiceTaco = new Taco(["Meat"], "Tortilla");
Vi skapar ett objekt av en viss typ, i detta fall: Taco
Stor bokstav på funktionsnamnet gör ingenting, det är fortfarande en vanlig funktion
function Taco(topping, bread){
this.topping = topping;
this.bread = bread;
this.addTopping = function(newTopping){
this.topping.push(newTopping);
}
}
this
pekar på varje enskilt nytt objekt av typen taco
Vi kan lägga till funktioner som manipulerar olika tacos
Constructor Call Pattern
Du vill ha viss logik kopplat till ett visst objekt
Du vill att ett objekt ska vara av en viss typ och ärva speciella egenskaper
Du skriver funktionerna för ett objekt en gång och sedan ärvs dessa funktioner till varje nytt objekt.
Objekt är alltid länkade till ett annat objekt
Det sista i kedjan är Object
Samma som med scope så kommer JavaScript söka sig uppför denna kedja för att hitta det den söker
Skapa en kopia av ett objekt
Object.assign()
let person1 = {
name: "Jorge"
}
let person2 = Object.assign({}, person1);
Bästa sättet att kopiera ett objekt rakt av
Skapa ett nytt objekt baserat på ett annat
Object.create()
let person1 = {
name: "Jorge"
}
let person2 = Object.create(person1);
Det som gör att allting är länkat till varandra kallas Prototypkedjan
Varje objekt har en egenskap som heter prototyp och som ärvs mellan objekt.
Prototypkedjan är grunden för hur allt i JavaScript fungerar
function Taco(topping, bread){
this.topping = topping;
this.bread = bread;
this.addTopping = function(newTopping){
this.topping.push(newTopping);
}
}
function Taco(topping, bread){
this.topping = topping;
this.bread = bread;
}
Taco.prototype.addTopping = function(newTopping){
this.topping.push(newTopping);
}
Övningar finns på Zenit/GitHub
Prototyper och objekt är grunden för allt inom JavaScript