Module‌‌‌ ‌‌‌৩৫ ‌‌‌এ‌‌‌ ‌‌‌আমরা‌‌‌ ‌‌‌যাকিছু‌‌‌ ‌‌‌শিখেছি‌‌‌

Module‌‌‌ ‌‌‌৩৫ ‌‌‌এ‌‌‌ ‌‌‌আমরা‌‌‌ ‌‌‌যাকিছু‌‌‌ ‌‌‌শিখেছি‌‌‌

(Advanced) Javascript Object Concepts

 

 

  • আমরা Object অনেক ভাবেই ডিক্লার করতে পারি । সে রাস্তা গুলো দেখাব আজকে ।

 

  1. Object literal

 

const obj = { name: "rashedul", job: "player" };

 

2. Object constructor

 

const obj2 = new Object();

3……….

 

const human = Object.create(obj);

console.log(human.name);

  • কোণ parameter না থাকলে obj এর যায়গায় null লিখে দিব কেননা ওখানে কিছু একটা দিতেই হবে

 

  • আমরা চাইলে class এর মাধ্যমেও একটা Object তৈরি করতে পারি ।

 

class People {

  constructor(name, job) {

    this.name = name;

    this.job = job;}}

const p1 = new People("rashedul", "web developer");

console.log(p1); // একটা Object return দিবে

 

 

  • Object এর ভেতরে কোণ ফাংশন থাকলে তাকে Method বলে । ওই যে class এ ব্যাবহার করেছিলাম মনে আছে ?

  • Object এর keys এবং value গুলোকে console এ দেখাও !

 

const obj = { name: "ras", roll: 10 };

console.log(Object.keys(obj));

console.log(Object.values(Object));

 

  • আমরাতো keys, values পেয়ে গেলাম। কিন্তু আলাদা আলাদা ভাবে, যদি একসাথে আমরা আউটপুট নিতে চাই তাহলে তুমি কি করবে ?

 

const obj = { name: "rashedul", roll: 10, job: "web developer" };

const keyValuePairs = Object.entries(obj);

console.log(keyValuePairs);

 

  • এখানে আউটপুট আসবে ২ ডাইমেনশনাল হিসেবে । অর্থাৎ বুঝা গেল Object এর এক একটা প্রপার্টি এক একটা Array .


 

  • Object এর কোণ একটা প্রপার্টিকে রিমুভ(delete) করতে বললে তুমি কি করবে ? (datete ব্যাবহার করবে )

 

const obj = { name: "rashedul", roll: 10, job: "web developer" };

delete obj.name;

console.log(obj);

 

  • যদি তুমি object এর কোণ প্রপার্টিকেই ডিলিট করতে দিতে না চাও । তাহলে কি করবে ? মানে কেও ডিলিট করতে চাইলেও ডিলিট করতে দিবা না । মানে তাকে seal() করে দিতে হবে রাইট ?

 

const obj = { name: "rashedul", roll: 10, job: "web developer" };

Object.seal(obj);

delete obj.name;

console.log(obj);

  • দেখো এখানে name peoperty টা delete করা সত্ত্বেও সে ডিলিট হয় নি ।কারণ আমরা obj টাকে seal() সিলগালা করে দিয়েছি মানে তাকে ডিলিট করতেও পারবানা আবার  কিছু অ্যাডও করতে পারবে না । কিন্তু কিছুর ভেলু চাইলে তুমি পরিবর্তন করতে পার ।

 

  •  seal() এর পাশাপাশি আর একটা জিনিস আছে সেটা হল freez()seal() করলে কিছু কিছু পরিবর্তন করতে দিবে কিন্তু  freez() করলে আর কিছুই করতে দিবে না । অ্যাড, রিমুভ ,আপডেট কিছুই না

  • Freez এর কাজ কি ?  ও seal()freez() এর মধ্যে পারতক্ষ কি ?

 

  • আমরা কয় ধরনের Loop সম্পর্কে জানি ? (ধরনের)

 

for (let i = 0; i < 10; i++) {} // traditional loop

for (const num of numbers) {} //using for array

for (const prop in students) {} // use for object

 

  • আমরা চাইলে obejct এর keys ফুল পিক করে তার উপর loop চালাতে পারি জাতে করে আমরা এক একটা করে প্রপার্টি পেয়ে যাই

 

const obj = { name: "rashedul", roll: 10,

job: "web developer" };

const keys = Object.keys(obj);

for (const prop of keys) {

  console.log(prop, obj[prop]);}

 

এই কাজটা আমরা entries() এর মাধ্যমেও করতে পারি

 

const obj = { name: "rashedul", roll: 10, job: "web developer" };

for (const [keys, value] of Object.entries(obj)) {

  console.log(keys, value);}

 

  • তয়াকে যদি বলা হয় একটা Object কে compare কর । তাহলে তুমি  কি করবে ? যদি না পার তাহলে কোডপেন এর এই লিঙ্ক থেকে দেখে আসো ।

 

/* =====================================================

solving number  1

=====================================================*/

const first = { a: 1, b: 2 };

const second = { b: 2, a: 1 };

const third = first;

if (first === second) {

  console.log("equal");

} else {console.log("not  equal");}

 

if (first === third) {

  console.log("equal");} else {console.log("not  equal");}

 

/* =====================================================

solving number 2

=====================================================*/

if (JSON.stringify(first) === JSON.stringify(second)) {

  console.log("equal");} else {console.log("not  equal");}

 

/* =====================================================

solving number 3

=====================================================*/

function compareObject(obj1, obj2) {

  if (Object.keys(obj1).length !== Object.keys(obj2).length) {return false;}

 

  for (const prop in obj1) {

    if (obj1[prop] !== obj2[prop]) {

      return false; } }  return true;}

const isEqual = compareObject(first, second);

console.log(isEqual);

 

  • bind()  দিয়ে কিভাবে একটা Object এর ফাংশনকে অন্য একটা Object এ ব্যাবহার করতে পারি ?

 

const kibria = {

  name: "kibriya",id: 101,money: 5000,

  treatDey: function (expense) {

    this.money = this.money - expense;

    console.log("here ", this);

    return this.money;},};

 

const heroBalan = {id: 102,money: 6000,name: "hero balan",};

kibria.treatDey(100);// kibria এর থেকে ১০০ টাঁকা খসাবে

const heroTreatDey = kibria.treatDey.bind(heroBalan);

heroTreatDey(500); // hero এর থেকে ৫০০ টাঁকা খসাবে

heroTreatDey(300); // hero এর থেকে আবার ৩০০ টাঁকা খসাবে

kibria.treatDey(500); // kibria এর থেকে  আবার ৫০০ টাঁকা খসাবে

 

  • আমরা চাইলে আরও অনেক Object তৈরি করে । সেখানেও আমরা bind() করে কোড repeatation ছাড়া সেই ফাংশনের কাজ করে ফেলতে পারি ।

 

এই কাজটা আমরা আরও কিছু way তে করতে পারি

 

  • call() method এর মাধ্যমে । call() এর মাধ্যমে bond() এর ঝামেলা ছাড়াই সরাসরি কাজ করতে পারি ।  

 

const kibria = {name: "kibriya", id: 101, money: 5000,

  treatDey: function (expense, boksis, vat) {

    this.money = this.money - expense - boksis - vat;

    console.log("here ", this);

    return this.money;

  },

};

const heroBalan = { id: 102, money: 6000, name: "hero balan" };

kibria.treatDey.call(heroBalan, 500, 100, 20);

kibria.treatDey.call(heroBalan, 3500, 200, 50);

  • call() এর কাছাকাছি আর একটা ভার্সন আছে যেটা বলে  apply() । apply() এর মাধ্যমে করলে ফাংশনের parameter গুলো একটা Array [] এর ভেতরে পাস করতে হয় ।

 

kibria.treatDey.apply(heroBalan, [500, 100, 20]);

kibria.treatDey.apply(heroBalan, [3500, 200, 50]);

 

  • তো শেষ কথা হল bind(), call(), apply() এর ৩ টারই কাজ হচ্ছে একটা Object ফাংশনকে অন্য একটা Object এ ব্যাবহার করা ।

 

  •  

 

 

 

All module link

আর আমার github এ যাইতে চাইলে এই লিঙ্কে ক্লিক করুন

About

Md: Rashedul Islam Shihab

Writer of this note

Batch4

Social accounts

 

 

 

 

Previous Post Next Post