An object is a collection of properties , defined as a key-value pair. Each property has a key and a value. The property key can be a string and the property value can be any valid value.
Create an object
You can use {} or the new Object().
let object = {}
object.name = "Folau";
object.age = 33;
// or
let obj = new Object();
obj.name = "Folau";
obj.age = 33;
let user = {
"name": "Folau",
"age": 33
}
console.log("user: ", user);//{"name":"Folau","age":33}
Access field value with dot(.)
let user = {
"name": "Folau",
"age": 33
}
console.log("user name: ", user.name);//FolauAccess field value with []
let user = {
"name": "Folau",
"age": 33
}
console.log("user name: ", user['name']);//Folau
Remove or delete a key value with delete.
let user = {
"name": "Folau",
"age": 33
}
console.log("user: ", user);//{"name":"Folau","age":33}
/*
* To remove a property, we can use delete operator.
*/
delete user.age;
console.log("user: ", user);{"name":"Folau"}Check for attribute existence with in
let user = {
"name": "Folau",
"age": 33
}
console.log("user: ", user);//{"name":"Folau","age":33}
let doesUserHaveName = ("name" in user);
console.log("name in user: ", doesUserHaveName);//true
let doesUserHaveAddress = ("address" in user);
console.log("address in user: ", doesUserHaveAddress);//falseLoop through attributes of an object with in
let user = {
"name": "Folau",
"age": 33
}
for(let field in user){
console.log("field: ", field, ", value: ", user[field]);
}
//Output
field: name , value: Folau
field: age , value: 33Objects are mutable
Objects are mutable: They are addressed by reference, not by value. If user is an object, the following statement will not create a copy of user
let user = {
"name": "Folau",
"age": 33
}
let member = user;
member.name = "Lisa";
console.log("user: ", user);//{"name":"Lisa","age":33}
console.log("member: ", member);//{"name":"Lisa","age":33}The object member is not a copy of user. It is user. Both member and user are the same object.
Any changes to member will also change user, because member and user are the same object.
Clone objects
Use object.assign(target, source…). By cloning an object, changes to that object do not reflect on the original object.
let person = {
name:"Folau",
age: 33,
score: {
sc: 100
}
}
console.log("person ", person);//{name: "Folau", age: 33, score: {sc: 100}}
person.score.sc = 25;
/*
* Clone objects
*/
let lau = Object.assign({}, person);
console.log("lau", lau);//{name: "Folau", age: 33, score: {sc: 25}}Object.assign does not copy nested objects.
Clone object with JSON.stringify and JSON.parse
copyObject(obj){
let jsonString = JSON.stringify(obj);
return JSON.parse(jsonString);
}