ECMAScript 5 অবজেক্টের পরিবর্তন রোধ করার জন্য বিভিন্ন পদ্ধতি চালু করেছে। এই প্রতিরোধমূলক ব্যবস্থাগুলি নিশ্চিত করে যে কেউ, দুর্ঘটনাক্রমে বা অন্যথায় বস্তুর কার্যকারিতা পরিবর্তন করে।
প্রতিরোধক পদ্ধতির ৩টি স্তর রয়েছে
1) এক্সটেনশন প্রতিরোধ করুন
এই স্তরে, কেউ কোনও নতুন বৈশিষ্ট্য বা পদ্ধতি যোগ করতে পারে না তবে বিদ্যমান বৈশিষ্ট্য বা পদ্ধতিগুলি অ্যাক্সেস করতে পারে। এখানে সংশ্লিষ্ট বস্তু মুছে ফেলার ক্ষমতা আছে। Object.preventExtensions() এই কাজটি সম্পন্ন করার জন্য ব্যবহৃত পদ্ধতি। এটি কোনো নতুন বৈশিষ্ট্যকে বস্তুতে যোগ করা থেকে বাধা দেয়।
উদাহরণ
<html> <body> <script> var object1 = { prop1: 1 }; Object.preventExtensions(object1); delete object1.prop1 // value got deleted 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 // deleted so undefined
2) সীল
এটি এক্সটেনশন প্রতিরোধ করার সমান, উপরন্তু এটি বিদ্যমান বৈশিষ্ট্য বা পদ্ধতি মুছে ফেলার অনুমতি দেয় না। এই কাজটি সম্পন্ন করতে Object.seal() পদ্ধতি ব্যবহার করা হয়।
উদাহরণ
<html> <body> <script> var object1 = { prop1: 1 }; Object.seal(object1); object1.prop1 = 2; // value got changed delete object1.prop1; try { Object.defineProperty(object1, 'prop2', { value: 2 }); } catch (err) { document.write(err); } document.write("</br>"); document.write(object1.prop1); // it gives value as 2 because of seal. </script> </body> </html>
আউটপুট
TypeError: Cannot define property prop2, object is not extensible 2 // because of seal the value can't be deleated but got updated
3) হিমায়িত করুন
সিলের কার্যকারিতা ছাড়াও, ফ্রিজ এমনকি বিদ্যমান বৈশিষ্ট্যগুলি অ্যাক্সেস করার অনুমতি দেয় না। একটি অবজেক্ট ফ্রিজ করতে আমরা Object.freeze() ব্যবহার করি পদ্ধতি এটি একটি বস্তুকেও অপরিবর্তনীয় করে তুলতে পারে .
উদাহরণ
<html> <body> <script> var object1 = { prop1: 1 }; Object.freeze(object1); object1.prop1 = 2; // value got updated delete object1.prop1; // value got deleted try { Object.defineProperty(object1, 'prop2', { value: 2 }); } catch (err) { document.write(err); } document.write("</br>"); document.write(object1.prop1); // it gives 1 as output despite value updated to 2 </script> </body> </html>এ আপডেট হওয়া সত্ত্বেও আউটপুট হিসাবে 1 দেয়
আউটপুট
TypeError: Cannot define property prop2, object is not extensible 1 // because of freeze the value won't get delete and won't get update.