আপনি যদি কোনও ধরণের উত্তরাধিকার করার পরিকল্পনা করে থাকেন তবে আমি সুপারিশ করব this.constructor। এই সাধারণ উদাহরণটি ব্যাখ্যা করতে হবে কেন:
class ConstructorSuper {
constructor(n){
this.n = n;
}
static print(n){
console.log(this.name, n);
}
callPrint(){
this.constructor.print(this.n);
}
}
class ConstructorSub extends ConstructorSuper {
constructor(n){
this.n = n;
}
}
let test1 = new ConstructorSuper("Hello ConstructorSuper!");
console.log(test1.callPrint());
let test2 = new ConstructorSub("Hello ConstructorSub!");
console.log(test2.callPrint());
test1.callPrint()ConstructorSuper Hello ConstructorSuper!কনসোলে লগ হবে
test2.callPrint()ConstructorSub Hello ConstructorSub!কনসোলে লগ হবে
নামী বর্গ উত্তরাধিকারের সাথে সুন্দরভাবে আচরণ করবে না আপনি যদি না বর্ণিত ক্লাসের জন্য কোনও রেফারেন্স তৈরি করে এমন প্রতিটি ফাংশন স্পষ্টভাবে পুনরায় সংজ্ঞায়িত করেন। এখানে একটি উদাহরণ:
class NamedSuper {
constructor(n){
this.n = n;
}
static print(n){
console.log(NamedSuper.name, n);
}
callPrint(){
NamedSuper.print(this.n);
}
}
class NamedSub extends NamedSuper {
constructor(n){
this.n = n;
}
}
let test3 = new NamedSuper("Hello NamedSuper!");
console.log(test3.callPrint());
let test4 = new NamedSub("Hello NamedSub!");
console.log(test4.callPrint());
test3.callPrint()NamedSuper Hello NamedSuper!কনসোলে লগ হবে
test4.callPrint()NamedSuper Hello NamedSub!কনসোলে লগ হবে
উপরের সমস্ত চলমান বাবেল আরপিএলে দেখুন ।
আপনি এটি থেকে দেখতে পারেন যা test4এখনও এটি সুপার ক্লাসে রয়েছে বলে মনে করে; এই উদাহরণে এটি কোনও বিশাল চুক্তির মতো নাও মনে হতে পারে তবে আপনি যদি ওভাররাইড করা বা নতুন সদস্যের ভেরিয়েবলগুলি সদস্য ফাংশনগুলি উল্লেখ করার চেষ্টা করছেন তবে আপনি নিজেকে সমস্যার মধ্যে ফেলবেন।
SomeObject.printপ্রাকৃতিক বোধ হয়। কিন্তুthis.nযেহেতু কোন উদাহরণস্বরূপ, যদি আমরা স্ট্যাটিক পদ্ধতি সম্পর্কে কথা বলা হয় ভিতরে কোন মানে নেই।