-
Objects (1)JavaScript 2021. 10. 17. 00:22
이 글은 자바스크립트의 Objects(객체)에 관한 개념 및 문법을 정리하기 위해 작성하였습니다.< Objects >
We can use JavaScript objects to model real-world things, like a basketball, or we can use objects to build the data structures that make the web possible.
JavaScript objects are containers storing related data and functionality.
< Creating Object Literals >
To create a Object.
let object = { 'key' : value, key : value }
- Objects can be assigned to variables just like any Javascript type. To designate an Object Literal, use { }
- We fill an object with unordered data. This data is organized into key-value pairs.
1. key : 'String', can omit ' ' when have not any special characters in it.
2. value : any data
< Accessing Properties >
To access the object's property.
A property is what an object has, while a method is what an object does.1. Dot Notation : . (dot)
object.propertyName // propertyName is key
ex)
let spaceship = { homePlanet: 'Earth', color: 'silver' }; spaceship.homePlanet; // 'Earth' spaceship.color; // 'silver'
2. Bracket Notation : [ ]
object['property name'] // property name is key
- Must use when the key has special characters.
- You can also use a variable inside [ ] (expecially with function).
ex)
let spaceship = { homePlanet: 'Earth', color: 'silver' }; let returnAnyPro = (object, property) => { objectp[property]; } returnAnyPro(spaceship, homePlanet); // 'Earth'
- If we try to access a property that does not exist, undefined will be returned.
< Property Assignment >
To update a object's property after we create it.
1. Replace or Add
ex)
const spaceship = { type: 'shuttle' }; spaceship.color = 'gold'; // Creates a new key of 'color' with a value of 'gold'
- if there was no property with the name, a new property will be added to the object.
2. Delete
ex)
const spaceship = { 'Fuel Type': 'Turbo Fuel', homePlanet: 'Earth', mission: 'Explore the universe' }; delete spaceship.mission; // Removes the mission property
- It's important to know that although we can't reassign an object declared with const, we can still mutate it.
< Methods >
When the data stored on an object is a function, we call that a method
A property is what an object has, while a method is what an object does.1. Include Method
let object = { key: function() { // code block } } // With the new method syntax introduced in ES6 we can omit the colon and the function keyword. let object = { key () { // code block } }
2. Invoke Method
object.key(); // Invoke the object's key function
ex)
const alienShip = { invade () { console.log('Hello! We have come to dominate your planet.') } }; alienShip.invade(); // 'Hello! We have come to dominate your planet.'
+. console is a global javascript object and .log() is a method on that object.
Math is also a global javascript object and .floor() is a method on it.
< Nested Objects >
an object can have another object as a property.
ex)
const spaceship = { telescope: { yearBuilt: 2018, model: '91031-XLT', focalLength: 2032 }, crew: { captain: { name: 'Sandra', degree: 'Computer Engineering', encourageTeam() { console.log('We got this!') } } }, nanoelectronics: { computer: { terabytes: 100, monitors: 'HD' }, 'back-up': { battery: 'Lithium', terabytes: 50 } } }; // Access the spaceship's property spaceship.nanoelectronics['back-up'].battery; // 'Lithium'
< Pass By Reference >
Objects are passed by reference. This means when we pass a variable assigned to an object into a function as an argument, the computer interprets the parameter name as pointing to the space in memory that holding that object.
As a result, function which change object's properties actually mutate the object.ex)
const spaceship = { homePlanet : 'Earth', color : 'silver' }; let paintIt = obj => { obj.color = 'glorious gold' }; paintIt(spaceship); spaceship.color; // 'glorious gold'
However, reassignment of the object in a function wouldn't work.
ex)
let spaceship = { homePlanet : 'Earth', color : 'red' }; let tryReassignment = obj => { obj = { identified : false, 'transport type' : 'flying' } console.log(obj) // Prints {'identified': false, 'transport type': 'flying'} }; tryReassignment(spaceship); // The attempt at reassignment does not work. spaceship; // Still returns {homePlanet : 'Earth', color : 'red'}; spaceship = { identified : false, 'transport type': 'flying' }; // Regular reassignment still works.
- obj : reference to the location of the spaceship object.
(not to spaceship variable, because obj is a variable in its own right)-> obj is a variable, and its value is spaceship object's memory (at first).
But later, its value is { identified : false, 'transport type' : 'flying' }
< Looping Through Object : for... in >
To execute a given block of code for each property in an object.
ex)
let spaceship = { crew: { captain: { name: 'Lily', degree: 'Computer Engineering', cheerTeam() { console.log('You got this!') } }, 'chief officer': { name: 'Dan', degree: 'Aerospace Engineering', agree() { console.log('I agree, captain!') } }, medic: { name: 'Clementine', degree: 'Physics', announce() { console.log(`Jets on!`) } }, translator: { name: 'Shauna', degree: 'Conservation Science', powerFuel() { console.log('The tank is full!') } } } }; // for...in for (let crewMember in spaceship.crew) { console.log(`${crewMember}: ${spaceship.crew[crewMember].name}`); } // captain: Lily // chief officer: Dan // medic: Clementine // translator: Shauna
- for... in will iterate each element of the spaceship.crew object.
in each iteration, the variable crewMember is set to one of the spaceship.crew's keys'JavaScript' 카테고리의 다른 글
Higher-Order Functions (0) 2021.10.19 Objects (2) (0) 2021.10.17 Loops (0) 2021.10.16 Arrays (0) 2021.10.14 Scope (0) 2021.10.12