Proxy()
ECMAScript 6-এ ভিন্ন একটি নতুন ফিচার হলো proxy() অবজেক্ট। Proxy() অবজেক্ট মৌলিক অপারেশনগুলো (যেমন প্রোপার্টি লুকআপ, অ্যাসাইনমেন্ট, এনামারেশন, ফাংশন ইনভোকেশন ইত্যাদি) কাস্টমাইজ করার জন্য ব্যবহৃত হয়।
Proxy() অবজেক্টের ৩টি মূল উপাদান রয়েছে:
১) handler - এটি একটি প্লেসহোল্ডার অবজেক্ট যাতে ট্র্যাপ (traps) থাকে।
২) traps - ট্র্যাপগুলো প্রোপার্টি অ্যাক্সেস প্রদান করে।
৩) target - এটি একটি অবজেক্ট जिसे প্র্যাক্সি ভার্চুয়ালাইজ করে।
সিনট্যাক্স
var p = new Proxy(target, handler);
নিচের উদাহরণে, 'p' নামে একটি অবজেক্ট আছে যাতে কিছু প্রোপার্টি রয়েছে। যদি আমরা অবজেক্টে ডিফাইন করা নেই এমন প্রোপার্টি এক্সেস করতে চাই, তবে undefined আউটপুট হবে।
উদাহরণ
<html> <body> <script> var p = { Name: 'Ram kumar', Age: 27 }; document.write(person.Name); document.write("<br>"); document.write(person.Age); document.write("<br>"); document.write(person.designation); </script> </body> </html>আউটপুট
Ram kumar 27 undefined
Proxy() ব্যবহার করলে undefined আউটপুট এড়ানো যায়। Proxy() অজানা প্রোপার্টিকে "get" কীওয়ার্ড দিয়ে ট্র্যাপ করতে চায়। হ্যান্ডলার, যা Proxy()-এর ভিতরে ডিফাইন করা থাকে, target এবং অনুরোধ করা কী নেমকে "get" ট্র্যাপে পাস করে।
নিচের উদাহরণে প্রাথমিকভাবে অবজেক্ট 'p'-তে designation এবং role নেই। কিন্তু Proxy() আসার পর, অবজেক্ট এবং এর প্রোপার্টিগুলো 'get' দিয়ে ট্র্যাপ করা হয়েছে এবং অ্যাসাইন না করা প্রোপার্টিগুলো আউটপুটে দেখানো হয়েছে।
উদাহরণ
<html> <body> <script> var p = { Name: 'Ram kumar', Age: 27 }; var handler = { get: function(target, prop) { return prop in target ? target[prop] : 'Content developer'; } }; var prox = new Proxy(p, handler); document.write(prox.Name); document.write("<br>"); document.write(prox.Age); document.write("<br>"); document.write(prox.designation); document.write("<br>"); document.write(prox.role); </script> </body> </html>আউটপুট
Ram kumar 27 content developer content developer