@ বার্গি উল্লেখ করেছেন new.target.prototype
, তবে আমি একটি দৃ concrete় উদাহরণের সন্ধান করছিলাম যা প্রমাণ করে যে আপনি অ্যাক্সেস করতে পারবেন this
(বা আরও ভাল, ক্লায়েন্ট কোডটি যে বস্তুর সাথে তৈরি করছে new
তা নীচে দেখুন) কোনও কল না করেই অ্যাক্সেস করতে পারবেন super()
।
টক সস্তার, আমাকে কোডটি দেখান ... সুতরাং এখানে একটি উদাহরণ রয়েছে:
class A {
constructor() {
this.a = 123;
}
parentMethod() {
console.log("parentMethod()");
}
}
class B extends A {
constructor() {
var obj = Object.create(new.target.prototype)
return obj;
}
childMethod(obj) {
console.log('childMethod()');
console.log('this === obj ?', this === obj)
console.log('obj instanceof A ?', obj instanceof A);
console.log('obj instanceof B ?', obj instanceof B);
}
}
b = new B()
b.parentMethod()
b.childMethod(b)
যা আউটপুট দেবে:
parentMethod()
childMethod()
this === obj ? true
obj instanceof A ? true
obj instanceof B ? true
সুতরাং আপনি দেখতে পাচ্ছেন যে আমরা কার্যকরভাবে টাইপের একটি অবজেক্ট B
(শিশু শ্রেণি) তৈরি করছি যা টাইপের একটি অবজেক্ট A
(এর প্যারেন্ট ক্লাস) এবং childMethod()
সন্তানের মধ্যে B
আমরা বি এর সাহায্যে তৈরি হওয়া this
সেই বস্তুর প্রতি ইঙ্গিত করছি ।obj
constructor
Object.create(new.target.prototype)
এবং এগুলি মোটেও চিন্তা super
করে না।
বাস্তবে দেখা যায় যে জাতীয় একটি লিভারেজ constructor
যখন ক্লায়েন্ট কোড সহ একটি নতুন উদাহরণ নির্মান একটি সম্পূর্ণ ভিন্ন বস্তুর আসতে পারেন new
।
আশা করি এটি কাউকে সাহায্য করবে।