17
Föreläsning 5: Objekt ME152A

Föreläsning 5: Objekt

Embed Size (px)

Citation preview

Page 1: Föreläsning 5: Objekt

Föreläsning 5: ObjektME152A

Page 2: Föreläsning 5: Objekt

Vad är ett objekt?

Föreläsning 5

• Datastruktur

• Består av attribut:värde par

• Till skillnad från en array som har index:värde

• Vi kan modellera (alt. dölja) komplexitet genom det gränssnitt vi själva definierar

Page 3: Föreläsning 5: Objekt

Föreläsning 5

http://eloquentjavascript.net/img/object.jpg

Page 4: Föreläsning 5: Objekt

Föreläsning 5

// Tillskillnad från arrayer används // hakparenteser var obj = {};

// Ett objekt kan skapas med // attribut:värden par var dog = { name: "Boo", type: "Pomeranian", age: 11 };

// Eller så kan dessa läggas // till i efterhand var dog = {};

dog.name = "Boo"; dog.type = "Pomeranian"; dog.age = 11;

Attribut Värde

Page 5: Föreläsning 5: Objekt

Föreläsning 5

var dog = {};

// Alternativt vis att lägga till attribut dog["name"] = "Boo"; dog["type"] = "Pomeranian"; dog.age = 11;

// Samma sak gäller för att hämta ett värde dog.name; // => "Boo" dog["type"]; // => "Pomeranian" dog.age; // => 11

Page 6: Föreläsning 5: Objekt

Föreläsning 5

// Ett objekt, som en array, // kan innehålla alla typer av // värden

var obj = { text: "ABC", number: 1997, bool: true, list: [1, 2, 3, "e"] };

Page 7: Föreläsning 5: Objekt

Föreläsning 5

// Arrayer räcker inte till när // vi vill modellera data var person = [ "Jane", "Doe", 31, ["Peter", "Eliza"], true ];

// Objekt passar bra för detta var person = { firstname: "Jane", lastname: "Doe", age: 31, siblings: ["Peter", "Eliza"], anonymous: true };

Page 8: Föreläsning 5: Objekt

Föreläsning 5

var box = { width: 15, height: 12 };

"width" in box; // => true "area" in box; // => false

delete box.height;

"height" in box; // => false

Page 9: Föreläsning 5: Objekt

Föreläsning 5

if ("width" in box && "height" in box) { console.log("Area: ", box.width * box.height); }

Page 10: Föreläsning 5: Objekt

Föreläsning 5

// Arrayer och objekt i kombination var events = [ { day: "Monday", time: "22:00", city: "Stockholm" }, { day: "Friday", time: "18:00", city: "Copenhagen" }, { day: "Thursday", time: "08:00", city: "Berlin" } ];

events[1].day; // => "Friday" events[2].city; // => "Berlin"

var person = { name: "Jane Doe", siblings: [ { name: "Peter", age: 33 }, { name: "Eliza", age: 25 } ] };

person.siblings[0].name; // => "Pete

Page 11: Föreläsning 5: Objekt

Föreläsning 5

// Vi kan iterera genom alla attribut var box = { width: 12, height: 16 };

for (var property in box) { console.log("Property:", property); console.log("Value:", box[property]); }

// Skriver ut:

// Property: width // Value: 12 // Property: height // Value: 16

Page 12: Föreläsning 5: Objekt

Föreläsning 5

var person = { speak: function() { console.log("Hello!"); } };

person.speak(); // => "Hello!"

var calculator = { sum: function(a, b) { return a + b; } };

calculator.sum(10, 15); // => 25

Page 13: Föreläsning 5: Objekt

Föreläsning 5

var person = { firstname: "Jane", lastname: "Doe", fullname: function() { return this.firstname + " " + this.lastname; } };

person.firstname; // => "Jane" person.fullname(); // => "Jane Doe"

“This” - representerar det nuvarande objektet

Page 14: Föreläsning 5: Objekt

Föreläsning 5

var x = { name: "Jane", logSelf: function() { console.log(this); }, y: { name: "John", logSelf: function() { console.log(this); } } };

x.logSelf(); // => { name: "Jane", logSelf: [Function], y: [Object] }

x.y.logSelf(); // => { name: "John", logSelf: [Function] }

Page 15: Föreläsning 5: Objekt

Föreläsning 5

var x = { name: "Jane", logSelf: function() { console.log(this); }, y: { name: "John", logSelf: function() { console.log(this); } } };

x.logSelf(); // => { name: "Jane", logSelf: [Function], y: [Object] }

x.y.logSelf(); // => { name: "John", logSelf: [Function] }

x

y

Page 16: Föreläsning 5: Objekt

Föreläsning 5

// Funktion för att dynamiskt skapa ett objekt // när vi behöver det function createPerson(first, last, age) { return { firstname: first, lastname: last, age: age, fullname: function() { return this.firstname + " " + this.lastname; } }; }

var jane = createPerson("Jane", "Doe", 23);

jane.fullname(); // => "Jane Doe"

Page 17: Föreläsning 5: Objekt

Föreläsning 5

// Funktion som tar emot ett objekt och // skriver ut dess attribut i konsollen function logPerson(person) { console.log("Name:", person.name); console.log("Age:", person.age); }

var jane = { name: "Jane Doe", age: 23 };

logPerson(jane);

// Skriver ut

// Name: Jane Doe // Age: 23