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. Objects & Symbols
  5. Q36. What is the difference between Object.create() and the new keyword?
JavaScriptObjects & Symbols

Q36. What is the difference between Object.create() and the new keyword?

দুটোই নতুন object বানায়, কিন্তু prototype কীভাবে ঠিক হয় এবং constructor কীভাবে চলে।

দুটোই নতুন object তৈরি করে, কিন্তু কাজের ধরন আলাদা। new একটি constructor function চালায় এবং সেটিকে prototype হিসেবে ব্যবহার করে, আর Object.create() শুধু prototype ঠিক করে দেয় — কোনো constructor চালায় না।

newjavascript
javascript
// new দিয়ে
function Animal(name) {
  this.name = name;
}

Animal.prototype.speak = function () {
  return this.name + " শব্দ করছে";
};

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

console.log(dog.name);          // "কুকু"
console.log(dog.speak());       // "কুকু শব্দ করছে"
console.log(dog instanceof Animal); // true

new চালালে তিনটি কাজ হয় — (১) খালি object বানানো হয়, (২) সেটার prototype দাঁড় করানো Animal.prototype করে দেওয়া হয়, (৩) Animal ফাংশনটি this পেয়ে চালানো হয় যাতে this.name বসে।

Object.createjavascript
javascript
// Object.create দিয়ে — constructor চলে না
const proto = {
  speak() {
    return this.name + " শব্দ করছে";
  },
};

const dog = Object.create(proto);
dog.name = "কুকু";

console.log(dog.speak());
console.log(dog.hasOwnProperty("name"));  // true
console.log(dog instanceof proto);        // true

ধাপে ধাপে — Object.create(proto) বলে এমন একটি খালি object বানায় যার prototype হবে proto। তাই speak নিজের প্রপার্টি না হলেও prototype থেকে পাওয়া যায়। কিন্তু name কোনো constructor না চলার কারণে সেট হয়নি, তাই আমাদের নিজে বসাতে হলো।

দুটো মূল পার্থক্য এক নজরে।

বিষয়newObject.create
Constructor চালায়হ্যাঁনা
নিজস্ব প্রপার্টি বসায়constructor-ই বসায়নিজে বসাতে হয়
ফেরত দেয়নতুন objectনতুন object
প্রধান কাজclass তৈরিprototype ঠিক করা

এই পার্থক্যটা খুব লাভজনক, কারণ Object.create(null) দিলে কোনো prototype থাকে না — তাই toString বা hasOwnProperty মতো inherited method ও থাকে না। এটি dictionary বা শুধু key-value রাখার জন্য নিরাপদ কাঠামো।

Object.create(null)javascript
javascript
const dict = Object.create(null);

dict.name = "Rahim";
console.log(dict.name);            // "Rahim"
console.log(dict.toString);        // undefined — inherited নেই
console.log("toString" in dict);   // false
class-এর সাথেjavascript
javascript
// class-এ new ছাড়া instance বানানো যায় না,
// তাই class ব্যবহার করলে new-ই লাগবে
class User {
  constructor(name) {
    this.name = name;
  }
}

const a = new User("Rahim");
console.log(a);            // User { name: "Rahim" }
console.log(a.constructor); // [class User]
মনে রাখুন

সাধারণ object বানাতে new ব্যবহার করুন, আর কোনো object-কে prototype হিসেবে দিতে বা prototype ছাড়া পরিষ্কার dictionary বানাতে Object.create ব্যবহার করুন। দুটোর ফলাফল প্রায় একই, কাজের পদ্ধতি আলাদা।

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

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

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

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

mdanamolhasan1998@gmail.com