স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লক

স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লক হল একটি খুব নতুন জাভাস্ক্রিপ্ট বৈশিষ্ট্য, যা ECMAScript 2022-এ প্রমিত এবং শুধুমাত্র আধুনিক ব্রাউজারে সমর্থিত। স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লক আপনাকে স্ট্যাটিক ফিল্ডের মান ডায়নামিকভাবে সেট করতে দেয়, লজিক ব্যবহার করে যা একাধিক স্টেটমেন্ট বিস্তৃত করে।

একটি স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লক তৈরি করতে, কোঁকড়া বন্ধনীতে একটি ব্লক স্টেটমেন্ট অনুসরণ করে static কীওয়ার্ড ব্যবহার করুন ( {} ):

class MyClass {
  static {}
}

এই প্যাটার্নটি আপনাকে ক্লাসের মূল অংশে ঘোষিত স্ট্যাটিক ক্ষেত্রগুলি শুরু বা পরিবর্তন করতে দেয়:

class MyClass {
  static firstProperty = 'First property.';
  static secondProperty;
  static {
    this.secondProperty = 'Second property.';
  }
}

MyClass.secondProperty;
"Second property."

এই বিবৃতিগুলি মূল্যায়ন করা হয় যখন একটি ক্লাস প্রথম শুরু হয়, অর্থাৎ, যখন জাভাস্ক্রিপ্ট ইঞ্জিন এটিকে প্রথম মূল্যায়ন করে, তখন নয় যখন একটি ক্লাসের একটি উদাহরণ তৈরি করা হয়, যেমন constructor() :

class MyClass {
    static {
        console.log( "Static initialization block." );
    }
    constructor() {
        console.log( "Constructor." );
    }
}
> "Static initialization block."

const myClassInstance = new MyClass();
> "Constructor."

একটি ক্লাসে একাধিক স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লক থাকতে পারে এবং সেই ব্লকগুলিকে অন্য যে কোনও স্ট্যাটিক ক্ষেত্র এবং পদ্ধতির পাশাপাশি ঘোষিত ক্রম অনুসারে মূল্যায়ন করা হয়। এর মানে হল যে শুধুমাত্র একটি স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লকের আগে ঘোষিত ক্ষেত্রগুলি সেই ব্লকে উপলব্ধ:

class MyClass {
  static myNewField;
  static {
    this.myNewField = this.myField;
  }
  static myField = "My value.";
};

MyClass.myNewField;
> undefined

class MyCorrectedClass {
  static myNewField;
  static myField = "My value.";
  static {
    this.myNewField = this.myField;
  }
};

MyCorrectedClass.myNewField;
> "My value."

আপনার উপলব্ধি পরীক্ষা করুন

নিম্নলিখিত বিবৃতি কোনটি সত্য?

স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লকের মূল্যায়ন করা হয় যখন ক্লাসটি প্রথম শুরু করা হয়।
একটি ক্লাসে শুধুমাত্র একটি স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লক থাকতে পারে।
একটি স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লকের পরে ঘোষিত ক্ষেত্রগুলি ব্লকের ভিতরে উপলব্ধ।