দেখে মনে হচ্ছে জাভাস্ক্রিপ্ট (ES6) ক্লাসে super.__proto__ === this.__proto__।
কেন আপনি বিষয়টি ব্যাখ্যা করতে পারেন? আচরণটি বিভিন্ন ব্রাউজার জুড়ে সামঞ্জস্যপূর্ণ বলে মনে হয়, তাই আমার সন্দেহ হয় এটি অনুমানের কোথাও নির্দিষ্ট করা আছে।
নিম্নলিখিত কোড বিবেচনা করুন:
class Level1 {
myFunc() {
console.log('Level1');
}
}
class Level2 extends Level1 {
myFunc() {
console.log('Level2');
}
}
class Level3 extends Level2 {
myFunc() {
console.log('Level3 BEGIN ' + Math.random());
super.__proto__.myFunc();
console.log(super.__proto__ === this.__proto__);
console.log('Level3 END');
}
}
const foo = new Level3();
foo.myFunc();
আমি প্রত্যাশা করতাম যে ক্লাসের super.__proto__.myFunc();ফাংশন এবং এটি কল করবে । পরিবর্তে প্রকৃতপক্ষে শ্রেণীর কল (এটি নিজে কল করে) এবং তারপরে দ্বিতীয় আবেদনে এটি ক্লাসের ডাক দেয় । এই পুরোপুরি বোধগম্য যদি যা কোড প্রমান।myFunc()Level1super.__proto__ !== this.__proto__super.__proto__.myFunc();myFunc()Level3myFunc()Level2super.__proto__ === this.__proto__
আপনি super.__proto__ === this.__proto__এই উদাহরণের কারণ ব্যাখ্যা করতে পারেন ? যদি সম্ভব হয় তবে অনুমানের সম্পর্কিত বিভাগটিকেও সরবরাহ করুন।
__proto__অ্যাক্সেসর ফাংশনগুলি হ'লObject.prototypeএবং তাদেরthisমানটি চালিয়ে যাওয়ার সাথে এটির কিছু ছিল । তবে আমি কেবল এটি কল্পনা করতে পারি নি যেsuperএইভাবে কাজ করার জন্য এটি নির্দিষ্ট করা হয়েছিল। আমি চিন্তাsuperমোটামুটিভাবে সমতূল্য হচ্ছেthis.__proto__.__proto__, তাইsuper.__proto__সমতুল্য হতোthis.__proto__.__proto__.__proto__যা আচরণ আমি আশা করেছিলাম বিকশিত হবে। আপনি কি জানেন, যেখানেsuperনির্দিষ্ট জায়গায় সঠিক আচরণ নির্দিষ্ট করা হয়েছে?