Reflect API এর ধারণা এবং Proxy এর সাথে ব্যবহার

Proxy এবং Reflect API - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

337

ES6-এ Reflect API এবং Proxy দুটি শক্তিশালী টুল, যা জাভাস্ক্রিপ্টের অবজেক্ট ম্যানিপুলেশন এবং রিফ্লেকশন কাজকে আরও সহজ এবং শক্তিশালী করে তোলে। Reflect API একটি বিল্ট-ইন অবজেক্ট যা অবজেক্টের মেথডগুলি আরও সুসংহত এবং নিরাপদভাবে কল করার জন্য ডিজাইন করা হয়েছে, এবং Proxy একটি বিশেষ ধরনের অবজেক্ট যা অন্য একটি অবজেক্টের জন্য trap তৈরি করতে পারে, অর্থাৎ তার আচরণ কাস্টমাইজ করা যায়।


1. Reflect API এর ধারণা

Reflect একটি বিল্ট-ইন অবজেক্ট যা অবজেক্টের অপারেশনগুলি (যেমন প্রপার্টি পড়া, লেখা, মুছে ফেলা) আরও সহজ এবং পরিষ্কারভাবে পরিচালনা করতে সাহায্য করে। Reflect API অবজেক্টের অপারেশনগুলো যেমন, get(), set(), has(), deleteProperty() ইত্যাদি মেথডগুলোর সোজা ইন্টারফেস প্রদান করে।

Reflect API এর মেথডসমূহ:

  1. Reflect.get(target, propertyKey): একটি অবজেক্টের প্রপার্টি অ্যাক্সেস করে।

    const person = { name: 'John', age: 30 };
    console.log(Reflect.get(person, 'name'));  // "John"
    
  2. Reflect.set(target, propertyKey, value): একটি অবজেক্টে নতুন মান সেট করে।

    const person = { name: 'John' };
    Reflect.set(person, 'name', 'Jane');
    console.log(person.name);  // "Jane"
    
  3. Reflect.has(target, propertyKey): চেক করে যে, একটি প্রপার্টি অবজেক্টে আছে কিনা।

    const person = { name: 'John' };
    console.log(Reflect.has(person, 'name'));  // true
    console.log(Reflect.has(person, 'age'));   // false
    
  4. Reflect.deleteProperty(target, propertyKey): একটি প্রপার্টি মুছে ফেলে।

    const person = { name: 'John', age: 30 };
    Reflect.deleteProperty(person, 'age');
    console.log(person);  // { name: 'John' }
    
  5. Reflect.apply(target, thisArgument, argumentsList): ফাংশন কল করে এবং তার আর্গুমেন্ট পাঠায়।

    function greet(name) {
      return `Hello, ${name}!`;
    }
    console.log(Reflect.apply(greet, null, ['Alice']));  // "Hello, Alice!"
    

2. Proxy এর ধারণা

Proxy একটি বিশেষ ধরনের অবজেক্ট, যা অন্য অবজেক্টের জন্য trap তৈরি করে, অর্থাৎ আপনি যখন কোনো প্রপার্টি অ্যাক্সেস করবেন, সেটি কাস্টমাইজড আচরণ প্রদর্শন করবে। Proxy এর মাধ্যমে আপনি অবজেক্টের প্রপার্টি অ্যাক্সেস, সেট করা, মুছে ফেলা, ফাংশন কল ইত্যাদি intercept (ধরা) করতে পারেন এবং তাদের আচরণ কাস্টমাইজ করতে পারেন।

Proxy এর ব্যবহার:

Proxy এর দুটি প্রধান প্যারামিটার থাকে:

  1. target: এটি হলো সেই অবজেক্ট, যার জন্য Proxy তৈরি করা হবে।
  2. handler: এটি একটি অবজেক্ট, যেখানে আপনি বিভিন্ন ট্র্যাপ ফাংশন ডিফাইন করবেন (যেমন, get, set, has, ইত্যাদি)।

উদাহরণ:

const person = {
  name: 'John',
  age: 30
};

const handler = {
  get: function(target, prop) {
    if (prop === 'age') {
      return target[prop] + 5;  // age কে 5 বছর বড় করে দেখানো হবে
    }
    return prop in target ? target[prop] : `Property ${prop} not found`;
  },
  set: function(target, prop, value) {
    if (prop === 'age' && value < 0) {
      console.log("Age can't be negative");
      return false;  // বয়স যদি নেগেটিভ হয়, সেট করা যাবে না
    }
    target[prop] = value;
    return true;
  }
};

const proxyPerson = new Proxy(person, handler);

console.log(proxyPerson.name);  // "John"
console.log(proxyPerson.age);   // 35 (5 added to the age)
proxyPerson.age = -5;           // "Age can't be negative"
proxyPerson.age = 40;
console.log(proxyPerson.age);   // 40

এখানে, handler অবজেক্টের get এবং set ট্র্যাপ ফাংশন ব্যবহার করা হয়েছে যাতে age প্রপার্টির মান পরিবর্তন করা যায় এবং কিছু নির্দিষ্ট শর্ত পূরণ না করলে সেট করা যাবে না।


3. Reflect API এবং Proxy এর সংযুক্ত ব্যবহার

Reflect এবং Proxy একসাথে ব্যবহার করে আরও শক্তিশালী এবং কাস্টমাইজড আচরণ তৈরি করা যায়। উদাহরণস্বরূপ, যখন আপনি কোনো অবজেক্টের জন্য Proxy তৈরি করেন, তখন Reflect ব্যবহার করে আপনি ট্র্যাপগুলিতে ডিফল্ট আচরণ রাখতে পারেন, যাতে আপনি trap এবং default behavior এর মধ্যে সুসংগততা বজায় রাখতে পারেন।

উদাহরণ:

const person = {
  name: 'John',
  age: 30
};

const handler = {
  get: function(target, prop) {
    if (prop === 'age') {
      return Reflect.get(...arguments) + 5;  // age কে 5 বছর বড় করে দেখানো হবে
    }
    return Reflect.get(...arguments);  // Reflect ব্যবহার করা হচ্ছে ডিফল্ট আচরণে
  }
};

const proxyPerson = new Proxy(person, handler);
console.log(proxyPerson.age);   // 35 (age + 5)

এখানে, Reflect.get(...arguments) ব্যবহার করা হয়েছে যা get ট্র্যাপের মধ্যে default behavior (যেমন, সঠিকভাবে প্রপার্টি রিটার্ন করা) বজায় রাখে।


সারাংশ

  • Reflect API অবজেক্টের অপারেশনগুলো সহজভাবে পরিচালনা করার জন্য একটি সহায়ক টুল।
  • Proxy অন্য অবজেক্টের আচরণকে কাস্টমাইজ করতে ব্যবহৃত হয় এবং এটি trap ফাংশন দিয়ে নির্দিষ্ট কাজগুলো হ্যান্ডেল করে।
  • Reflect এবং Proxy একসাথে ব্যবহার করলে অ্যাসিনক্রোনাস অপারেশন এবং কাস্টম অবজেক্ট বেহেভিয়ার ম্যানিপুলেশন সহজ হয়।
Content added By
Promotion

Are you sure to start over?

Loading...