From 49b228eac3c1524c4fb1fd78c3a3171d673adcca Mon Sep 17 00:00:00 2001 From: Md-Asraful-Islam-Subbir <93644909+Md-Asraful-Islam-Subbir@users.noreply.github.com> Date: Sat, 20 Dec 2025 19:05:29 +0600 Subject: [PATCH] explain updated --- day-12/index.js | 69 +++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/day-12/index.js b/day-12/index.js index b719d8d..6f629a1 100644 --- a/day-12/index.js +++ b/day-12/index.js @@ -3,7 +3,7 @@ console.log("Day 12 - JavaScript Objects"); let user = { name: "tapas", age: 40, - "is adimin": true + "is adimin": true // multi word property }; console.log(user.name); // "tapas" @@ -13,7 +13,7 @@ user.isSeniorCitizen = false; user["movie lover"] = true; console.log(user); - +// Accessing multi word property console.log(user["is adimin"]); user.age = 34; @@ -22,7 +22,7 @@ user["movie lover"] = false; // delete user["movie lover"]; // delete user.age; console.log(user) - +// Dynamic Property Access const someKey = "age"; console.log(user[someKey]); // 34 @@ -40,21 +40,22 @@ function Car(name, model) { this.name = name; this.model = model } - +//here Car is uppercase because it is a constructor function, +// so by convention we use uppercase for constructor functions const bmwCar = new Car("BMW", "X1"); const audiCar = new Car("Audi", "A8"); console.log(bmwCar) console.log(audiCar) console.log(bmwCar instanceof Car); - +// Object Creation using Object Constructor const person = new Object() person.name = "Alpha"; person.age = 76; console.log(person); -// factory +// factory function means a function that returns an object function createUser(name, age) { return { name, @@ -66,13 +67,14 @@ function createUser(name, age) { } const user1 = createUser("tapas", 39) -console.log(user1) +console.log(user1) // {name: "tapas", age: 39, greet: ƒ} user1.name; user1.age; user1.greet(); const user2 = createUser("bob", 32) console.log(user2) +// Nested Objects let profile = { name: "tapas", company: "CreoWis", @@ -89,23 +91,23 @@ let profile = { } } } -// for ... in +// for ... in use to iterate over object properties for (let key in profile) { console.log(key) console.log(profile[key]); } +//here Object.keys() method returns an array of a given object's own enumerable property names +console.log(Object.keys(profile)); // ["name", "company", "message", "address"] -console.log(Object.keys(profile)); - -console.log(profile.salary); // undefined +console.log(profile.salary); // undefined because salary property doesn't exist -console.log("salary" in profile); +console.log("salary" in profile); // false if (!profile.salary) { console.log("The salary property doesn't exist"); } - +// Accessing Nested Object Properties console.log(profile.address.country); // India profile.address.greeting(); console.log(profile.name);// "tapas" @@ -127,18 +129,18 @@ fruit = oneMoreFruit; console.log(fruit == oneMoreFruit); // true console.log(fruit === oneMoreFruit); // true -// Static Methods +// Static Methods used with Objects const target = {p:1, a:2}; const source = {a:3, b:5}; - +//object.assign(target, source) method copies all enumerable own properties from one or more source objects to a target object. It returns the modified target object. const retrunedObj = Object.assign(target, source); -console.log(retrunedObj); +console.log(retrunedObj);// {p: 1, a: 3, b: 5} a:2 is overwritten by a:3 because b property doesn't exist in target object const obj = {name: "tapaScript"}; const obj2 = Object.assign({}, obj); -console.log(obj2) -console.log(obj === obj2) +console.log(obj2) // {name: "tapaScript"} +console.log(obj === obj2) // false const obj3 = { a: 1, @@ -148,7 +150,7 @@ const obj4 = Object.assign({}, obj3); console.log(obj4); // {a: 1, b: {c: 2}} // obj4.b.c = 3; -// obj4.a = 100; +// obj4.a = 100; // console.log(obj4.a); // 100 // console.log(obj3.a); // 1 @@ -173,44 +175,43 @@ const myObj = { a: "tapas", b: 32, }; - -const myArr = Object.entries(myObj); -console.log(myArr) +// Object.entries() method returns an array of a given object's own enumerable string-keyed property [key, value] pairs. +const myArr = Object.entries(myObj); // [['a', 'tapas'], ['b', 32]] +console.log(myArr) //object to array conversion const entries = new Map([ ["foo", "bar"], ["baz", 42], ]); -const objEntries = Object.fromEntries(entries) -console.log(objEntries); - +const objEntries = Object.fromEntries(entries) // converts a list of key-value pairs into an object +console.log(objEntries); // array to object conversion {foo: "bar", baz: 42} const emp = { sal: 100 } - +// Freezing an Object which makes it immutable but shallowly Object.freeze(emp); -emp.sal = 200; -emp.name = "Alex"; +emp.sal = 200; // won't work because object is frozen +emp.name = "Alex"; // won't work because object is frozen delete emp.sal; -console.log(emp) +console.log(emp) // {sal: 100} -console.log(Object.isFrozen(emp)); +console.log(Object.isFrozen(emp)); // true const dept = { name: "finance" } -Object.seal(dept); +Object.seal(dept); // makes the object sealed but shallowly -dept.address = "Bangalore" +dept.address = "Bangalore" // won't work because object is sealed delete dept.name; -dept.name = "HR" -console.log(dept) +dept.name = "HR" // works because we can modify existing properties in sealed object +console.log(dept) // {name: "HR"} console.log(Object.hasOwn(dept, "address"))