Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Advanced
  5. Q25. What is prototypal inheritance in JavaScript?
JavaScriptAdvanced

Q25. What is prototypal inheritance in JavaScript?

prototype chain কী, property কীভাবে খোঁজা হয় এবং class আসার পরও কেন এটি বোঝা জরুরি।

JavaScript-এ inheritance থাকে object থেকে object-এ। প্রতিটি object-এর একটি লুকানো prototype property থাকে, আর সেখান থেকে আরেকটি object-এর prototype — এভাবে চলতে থাকে। এই সূত্রকেই বলে prototype chain।

Object.create দিয়ে inheritancejavascript
javascript
const animal = {
  sound: "গর্জন",
  speak() {
    return this.name + " বলছে " + this.sound;
  },
};

const dog = Object.create(animal); // animal-এর prototype
dog.name = "কুকু";

console.log(dog.speak()); // "কুকু বলছে গর্জন"
console.log(dog.hasOwnProperty("name"));   // true  — নিজের
console.log(dog.hasOwnProperty("sound")); // false — prototype থেকে এসেছে

ধাপে ধাপে — dog-এর নিজের কোনো speak নেই, তাই JavaScript প্রথমে dog খুঁজে দেখে, পায় না। তারপর dog-এর prototype অর্থাৎ animal-এ গিয়ে সেখানে speak পেয়ে যায় এবং সেটিকেই চালায়। তাই this হয় dog।

প্রতিটি object শেষে গিয়ে Object.prototype-এ পৌঁছায়, যেখান থেকে toString, hasOwnProperty এসব পাওয়া যায়।

chain বোঝাjavascript
javascript
const obj = {};

obj.toString !== Object.prototype.toString; // false

// খুঁজে বের করার চেইন
console.log(Object.getPrototypeOf(dog) === animal); // true

// একটা property খুঁজে বের করতে
console.log("speak" in dog);  // true — chain-এর যেকোনো জায়গায়
console.log(dog.speak);        // function

ES6-এর class আসার পরেও ভিতরে একই prototype chain কাজ করে — শুধু লেখার ধরন পরিষ্কার হয়েছে।

class দিয়েjavascript
javascript
class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    return this.name + " শব্দ করছে";
  }
}

class Dog extends Animal {
  speak() {
    return super.speak() + " (ঘেউ ঘেউ)";
  }
}

const dog = new Dog("কুকু");

console.log(dog.speak()); // "কুকু শব্দ করছে (ঘেউ ঘেউ)"

// class-এর নিজস্ব prototype থাকে না
console.log(Object.getPrototypeOf(Dog) === Animal); // true

নতুন object তৈরির তিনটি উপায় — Object.create(proto), constructor function দিয়ে new, আর Object.assign(target, source)।

নতুন object তৈরির উপায়javascript
javascript
// assign দিয়ে মূল object না বদলে নতুন তৈরি
const base = { a: 1 };
const extended = Object.assign(Object.create(base), { b: 2 });

console.log(extended.a, extended.b); // 1 2
বিষয়PrototypeClass
ভিত্তিobjectconstructor function-এর উপর সাধারণ মোড়ক
তৈরি হয়ES3 থেকেES6 থেকে
গতিতুলনামূলক ধীরআধুনিক V8-এ দ্রুত
ব্যবহারপুরোনো কোডআজকের কোড
সতর্কতা

Prototype বদলে দিলে (obj.__proto__ = ...) পুরো অ্যাপে প্রভাব পড়ে, তাই Object.setPrototypeOf ব্যবহার করা উচিত নয় — পারফরম্যান্সের জন্য Object.create আগে থেকেই prototype ঠিক করে নিন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Advanced বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com