Accessing Properties
const apple = {
color: 'Green' ,
price: { bulk: '$3/kg' , smallQty: '$4/kg' }
};
console. log (apple.color); // => Green
console. log (apple.price.bulk); // => $3/kg
Naming Properties
// Example of invalid key names
const trainSchedule = {
// Invalid because of the space between words.
platform num: 10 ,
// Expressions cannot be keys.
40 - 10 + 2 : 30 ,
// A + sign is invalid unless it is enclosed in quotations.
+compartment: 'C'
}
Non-existent properties
const classElection = {
date: 'January 12'
};
console. log (classElection.place); // undefined
Mutable
const student = {
name: 'Sheldon' ,
score: 100 ,
grade: 'A'
};
console. log (student);
// { name: 'Sheldon', score: 100, grade: 'A' }
delete student.score;
student.grade = 'F' ;
console. log (student);
// { name: 'Sheldon', grade: 'F' }
student = {};
// TypeError: Assignment to constant variable.
Assignment shorthand syntax
const person = {
name: 'Tom' ,
age: '22'
};
const { name , age } = person;
console. log (name); // 'Tom'
console. log (age); // '22'
Delete operator
const person = {
firstName: 'Matilda' ,
age: 27 ,
hobby: 'knitting' ,
goal: 'learning JavaScript'
};
delete person.hobby; // or delete person[hobby];
console. log (person);
/*
{
firstName: "Matilda"
age: 27
goal: "learning JavaScript"
}
*/
Objects as arguments
const origNum = 8 ;
const origObj = { color: 'blue' };
const changeItUp = ( num , obj ) => {
num = 7 ;
obj.color = 'red' ;
};
changeItUp (origNum, origObj);
// Will output 8 since integers are passed by value.
console. log (origNum);
// Will output 'red' since objects are passed
// by reference and are therefore mutable.
console. log (origObj.color);
Shorthand object creation
const activity = 'Surfing' ;
const beach = { activity };
console. log (beach); // { activity: 'Surfing' }
this Keyword
const cat = {
name: 'Pipey' ,
age: 8 ,
whatName () {
return this .name;
}
};
console. log (cat. whatName ()); // => Pipey
Factory functions
// A factory function that accepts 'name',
// 'age', and 'breed' parameters to return
// a customized dog object.
const dogFactory = ( name , age , breed ) => {
return {
name: name,
age: age,
breed: breed,
bark () {
console. log ( 'Woof!' );
}
};
};
Object methods
const engine = {
// method shorthand, with one argument
start ( adverb ) {
console. log ( `The engine starts up ${ adverb }...` );
},
// anonymous arrow function expression with no arguments
sputter : () => {
console. log ( 'The engine sputters...' );
}
};
engine. start ( 'noisily' );
engine. sputter ();
Getters and setters
const myCat = {
_name: 'Dottie' ,
get name () {
return this ._name;
},
set name ( newName ) {
this ._name = newName;
}
};
// Reference invokes the getter
console. log (myCat.name);
// Assignment invokes the setter
myCat.name = 'Yankee' ;