Objects

লেসন ৩১ / ৪৪

Object তৈরি ও Access

// Object Literal (সবচেয়ে জনপ্রিয়)
let person = {
    firstName: "করিম",
    lastName: "আহমেদ",
    age: 25,
    email: "karim@example.com",
    hobbies: ["পড়া", "ভ্রমণ"],

    // Method (function property)
    greet: function() {
        return `হ্যালো, আমি ${this.firstName}`;
    },

    // ES6 shorthand
    introduce() {
        return `আমি ${this.firstName}, বয়স ${this.age}`;
    }
};

// Access
person.firstName          // "করিম"
person["firstName"]       // একই
person.greet()            // "হ্যালো, আমি করিম"

// যোগ/পরিবর্তন
person.phone = "01712345678";
person.age = 26;

// Delete
delete person.email;

Object Methods

Object.keys(person)     // ["firstName", "lastName", ...]
Object.values(person)   // ["করিম", "আহমেদ", ...]
Object.entries(person)  // [["firstName","করিম"], ...]

// Loop
for (let key in person) {
    console.log(key, ":", person[key]);
}

Object.entries(person).forEach(([key, val]) => {
    console.log(key, val);
});

// Merge
let a = { x: 1, y: 2 };
let b = { y: 3, z: 4 };
let merged = Object.assign({}, a, b);  // { x:1, y:3, z:4 }
let merged2 = { ...a, ...b };           // একই

// Copy
let clone = { ...person };              // shallow copy
let deep = JSON.parse(JSON.stringify(person));  // deep copy

// Freeze (read-only)
Object.freeze(person);
person.age = 30;  // ❌ কাজ হবে না

Destructuring

let { firstName, age } = person;
console.log(firstName, age);

// Rename
let { firstName: name } = person;

// Default value
let { country = "Bangladesh" } = person;

// Nested
let user = {
    name: "করিম",
    address: { city: "ঢাকা", zip: "1212" }
};
let { address: { city } } = user;  // city = "ঢাকা"

// Function এ
function printUser({ firstName, age }) {
    console.log(`${firstName}, ${age}`);
}
printUser(person);

this Keyword

let obj = {
    name: "করিম",
    greet: function() {
        console.log(this.name);  // "করিম"
    },
    greetArrow: () => {
        console.log(this.name);  // undefined (arrow-এ this নেই!)
    }
};

JSON (JavaScript Object Notation)

let person = { name: "করিম", age: 25 };

// Object → JSON string
let json = JSON.stringify(person);
// '{"name":"করিম","age":25}'

// JSON string → Object
let obj = JSON.parse(json);
console.log(obj.name);  // "করিম"