কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে অবজেক্ট মডিফিকেশন প্রতিরোধ করা

ECMAScript 5 অবজেক্ট মডিফিকেশন প্রতিরোধের জন্য বেশ কয়েকটি মেথড ইন্ট্রোডিউস করেছে। এই প্রতিরোধামূলক উপায়গুলো নিশ্চিত করে কেউ আকস্মিক বা অনিচ্ছাকৃতভাবেও অবজেক্টের ফাংশনালিটি পরিবর্তন করতে পারে না।

প্রতিরোধের ৩ লেভেল

১) প্রিভেন্ট এক্সটেনশন (Prevent Extensions)

এই লেভেলে কোনো নতুন প্রপার্টি বা মেথড যোগ করা যায় না, কিন্তু এক্সিস্টিং প্রপার্টি/মেথড এক্সেস করা যায়। অবজেক্ট ডিলিট করা সম্ভব। Object.preventExtensions() মেথড এটি সম্পন্ন করে।

উদাহরণ

<html> <body> 
<script> 
  var object1 = { prop1: 1 };
  Object.preventExtensions(object1);
  delete object1.prop1; // ভ্যালু ডিলিট হয়েছে
  
  try {
    Object.defineProperty(object1, 'prop2', { value: 2 });
  } catch (err) {
    document.write(err);
  }
  document.write("</br>");
  document.write(object1.prop1);
</script> 
</body> </html>

আউটপুট

TypeError: Cannot define property prop2, object is not extensible undefined

২) সিল (Seal)

প্রিভেন্ট এক্সটেনশনের সকল ফিচারের পাশাপাশি এটি এক্সিস্টিং প্রপার্টি/মেথড ডিলিট করতে দেয় না। Object.seal() মেথড এটি সম্পন্ন করে।

উদাহরণ

<html> <body> 
<script> 
  var object1 = { prop1: 1 };
  Object.seal(object1);
  object1.prop1 = 2; // ভ্যালু চেঞ্জ হয়েছে
  delete object1.prop1; // ডিলিট হবে না
  
  try {
    Object.defineProperty(object1, 'prop2', { value: 2 });
  } catch (err) {
    document.write(err);
  }
  document.write("</br>");
  document.write(object1.prop1); // ২ দেখাবে কারণ সিলড
</script> 
</body> </html>

আউটপুট

TypeError: Cannot define property prop2, object is not extensible 2

৩) ফ্রিজ (Freeze)

সিলের সব ফিচারের পাশাপাশি এটি এক্সিস্টিং প্রপার্টি এক্সেস/মডিফাই করতে দেয় না। Object.freeze() মেথড দিয়ে অবজেক্ট ফ্রিজ করা হয়। এটি অবজেক্টকে ইমিউটেবল বানায়।

উদাহরণ

<html> <body> 
<script> 
  var object1 = { prop1: 1 };
  Object.freeze(object1);
  object1.prop1 = 2; // আপডেট হবে না
  delete object1.prop1; // ডিলিট হবে না
  
  try {
    Object.defineProperty(object1, 'prop2', { value: 2 });
  } catch (err) {
    document.write(err);
  }
  document.write("</br>");
  document.write(object1.prop1); // ১ দেখাবে, ২ হয়নি
</script> 
</body> </html>

আউটপুট

TypeError: Cannot define property prop2, object is not extensible 1

সারসংক্ষেপ

  • preventExtensions: নতুন প্রপার্টি যোগ করা যায় না
  • seal: নতুন প্রপার্টি যোগ/ডিলিট করা যায় না, এক্সিস্টিং মডিফাই করা যায়
  • freeze: সম্পূর্ণ ইমিউটেবল - কিছুই পরিবর্তন করা যায় না
  1. স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করা

  2. জাভাস্ক্রিপ্টে ইম্পোর্ট করা অবজেক্ট ডিস্ট্রাকচার করা

  3. জাভাস্ক্রিপ্টে মাল্টিডাইমেনশনাল অবজেক্ট তৈরি করা

  4. জাভাস্ক্রিপ্টে অ্যারে অবজেক্টে রূপান্তর করা