জাভাস্ক্রিপ্টে ফাংশনগুলির রহস্য সমাধান করতে অক্ষম


16

আমি জাভাস্ক্রিপ্টের পর্দার দৃশ্যের পিছনে বোঝার চেষ্টা করছি এবং অবজেক্টগুলিতে বিশেষত অবজেক্ট এবং ফাংশন এবং তাদের মধ্যে সম্পর্কটি তৈরির বিষয়টি বুঝতে আটকেছি

যখন আমি পড়লাম যে অ্যারে, স্ট্রিং ইত্যাদির মতো সমস্ত বিল্ট অবজেক্টগুলি অবজেক্ট থেকে এক্সটেনশন (উত্তরাধিকারসূত্রে) হয় তখন আমি ধরে নিয়েছিলাম যে অবজেক্টটি সর্বপ্রথম অবজেক্টে নির্মিত যা তৈরি হয়ে যায় এবং বাকী অবজেক্টগুলি এর উত্তরাধিকার সূত্রে প্রাপ্ত হয়। তবে আপনি যখন জানতে পারবেন যে অবজেক্টগুলি কেবল ফাংশন দ্বারা তৈরি করা যেতে পারে তবে ফাংশনগুলি ফাংশনের অবজেক্ট ছাড়া কিছুই নয় sense এটি একধরনের মুরগির এবং মুরগির দ্বিধাদ্বন্দ্বের মতো শুনতে শুরু করে।

অন্যান্য অত্যন্ত বিভ্রান্তিকর জিনিসটি হ'ল, যদি আমি console.log(Function.prototype)এটি কোনও ফাংশন প্রিন্ট করি তবে যখন আমি console.log(Object.prototype)এটি প্রিন্ট করি তখন কোনও বস্তু মুদ্রিত হয়। কেন Function.prototypeএকটি ফাংশন যখন এটি একটি বস্তু বোঝানো হয়েছিল?

মোজিলা ডকুমেন্টেশন অনুসারে প্রতিটি জাভাস্ক্রিপ্ট অবজেক্টের functionএক্সটেনশন Functionতবে আপনি যখন console.log(Function.prototype.constructor)এটি আবার কোনও ফাংশন হন function এখন আপনি কীভাবে এটি তৈরি করতে কিছু ব্যবহার করতে পারেন (মন = ফুঁকানো)।

শেষ কথা, Function.prototypeএকটি ফাংশন তবে আমি constructorব্যবহার Function.prototype.constructorকরে ফাংশনটি অ্যাক্সেস করতে পারি তার অর্থ Function.prototypeএই কোনও ফাংশন যা prototypeঅবজেক্টটিকে ফেরত দেয়


যেহেতু একটি ফাংশন একটি অবজেক্ট, এর অর্থ হ'ল Function.prototypeএটি একটি ফাংশন হতে পারে এবং এর অভ্যন্তরীণ ক্ষেত্র থাকতে পারে। সুতরাং না আপনি যখন প্রোটোটাইপ ফাংশনটি কাঠামোর মধ্য দিয়ে যাচ্ছেন তখন চালাবেন না। পরিশেষে মনে রাখবেন যে একটি ইঞ্জিন জাভাস্ক্রিপ্টকে ব্যাখ্যা করার মতো রয়েছে, সুতরাং অবজেক্ট এবং ফাংশন সম্ভবত ইঞ্জিনের মধ্যে তৈরি হয়েছে, জাভাস্ক্রিপ্ট থেকে নয় এবং বিশেষ রেফারেন্স থেকে Function.prototypeএবং Object.prototypeসম্ভবত ইঞ্জিন দ্বারা একটি বিশেষ উপায়ে ব্যাখ্যা করা যেতে পারে।
ওয়ালফ্র্যাট

1
আপনি যদি কোনও মানদণ্ডের সাথে সামঞ্জস্যপূর্ণ জাভাস্ক্রিপ্ট সংকলকটি প্রয়োগ না করে থাকেন তবে আপনার সত্যিই এই জিনিসগুলির বিষয়ে চিন্তা করার দরকার নেই। আপনি যদি কিছু কার্যকর করার চেষ্টা করছেন তবে আপনি অবশ্যই তা বন্ধ করবেন।
জ্যারেড স্মিথ

5
এফওয়াইআই "মুরগি ও মুরগির দ্বিধা" এর ইংরেজিতে সাধারণ বাক্যাংশটি হ'ল "মুরগি ও ডিমের সমস্যা", যথা "প্রথম যেটি এসেছে, মুরগী ​​নাকি ডিম?" (অবশ্যই উত্তরটি ডিম। মুরগির আগে কয়েক মিলিয়ন বছর ধরে ডিম্বাকৃতির প্রাণী ছিল))
এরিক লিপার্ট

উত্তর:


32

আমি জাভাস্ক্রিপ্টের পর্দার দৃশ্যের পিছনে বোঝার চেষ্টা করছি এবং অবজেক্টগুলিতে বিশেষত অবজেক্ট এবং ফাংশন এবং তাদের মধ্যে সম্পর্কটি তৈরির বিষয়টি বুঝতে আটকেছি।

এটি জটিল, ভুল বোঝাবুঝি করা সহজ এবং অনেকগুলি শুরুর জাভাস্ক্রিপ্ট বই এটির ভুল হয়ে যায়, তাই আপনি যা পড়েছেন তার উপর বিশ্বাস করবেন না।

১৯৯০-এর দশকে এবং মাইক্রোসফ্টের জেএস ইঞ্জিন প্রয়োগকারীদের মধ্যে আমি একজন এবং মানীকরণ কমিটিতে ছিলাম এবং এই উত্তরটি একসাথে রেখে আমি বেশ কিছু ভুল করেছিলাম। (যদিও আমি 15 বছরেরও বেশি সময় ধরে এটি নিয়ে কাজ করি নি, তবে সম্ভবত আমার ক্ষমা করা যেতে পারে)) এটি কৌশলপূর্ণ বিষয়। তবে একবার আপনি প্রোটোটাইপ উত্তরাধিকার বুঝতে পারলে, এটি সমস্ত অর্থবোধক হয়ে যায়।

যখন আমি পড়লাম যে অ্যারে, স্ট্রিং ইত্যাদির মতো সমস্ত বিল্ট অবজেক্টগুলি অবজেক্ট থেকে এক্সটেনশন (উত্তরাধিকারসূত্রে) হয় তখন আমি ধরে নিয়েছিলাম যে অবজেক্টটি সর্বপ্রথম অবজেক্টে নির্মিত যা তৈরি হয়ে যায় এবং বাকী অবজেক্টগুলি এর উত্তরাধিকার সূত্রে প্রাপ্ত হয়।

শ্রেণিভিত্তিক উত্তরাধিকার সম্পর্কে আপনার জানা সমস্ত কিছু ফেলে দিয়ে শুরু করুন। জেএস প্রোটোটাইপ ভিত্তিক উত্তরাধিকার ব্যবহার করে।

এরপরে, নিশ্চিত করুন যে "উত্তরাধিকার" এর অর্থ কী তা সম্পর্কে আপনার মাথায় খুব স্পষ্ট সংজ্ঞা রয়েছে। সি # বা জাভা বা সি ++ এর মতো ওও ভাষায় ব্যবহৃত লোকেরা ভাবেন যে উত্তরাধিকারের অর্থ সাবটাইপিং, তবে উত্তরাধিকারের অর্থ সাবটাইপিংয়ের অর্থ নয়। উত্তরাধিকার অর্থ একটি জিনিসের সদস্যরাও অন্য জিনিসের সদস্য । এটি অগত্যা এই যে এই জিনিসগুলির মধ্যে একটি subtyping সম্পর্ক আছে মানে না ! টাইপ থিওরিতে এতগুলি ভুল বোঝাবুঝির ফলে লোকেরা বুঝতে পারে না যে পার্থক্য রয়েছে।

তবে আপনি যখন জানতে পারবেন যে অবজেক্টগুলি কেবল ফাংশন দ্বারা তৈরি করা যেতে পারে তবে ফাংশনগুলি ফাংশনের অবজেক্ট ছাড়া কিছুই নয় sense

এটা সহজ মিথ্যা। কিছু ফাংশন কল করে কিছু বস্তু তৈরি হয় না । কিছু কিছু জেএস রানটাইম দ্বারা কিছু তৈরি করার বাইরে তৈরি করা হয়। এমন ডিম রয়েছে যা কোনও মুরগীই রাখেনি । শুরু হওয়ার সাথে সাথে এগুলি কেবল রানটাইম দ্বারা তৈরি হয়েছিল।new FF

আসুন বলুন যে নিয়মগুলি কী এবং সম্ভবত এটি সাহায্য করবে।

  • প্রতিটি বস্তুর উদাহরণগুলির একটি প্রোটোটাইপ অবজেক্ট থাকে।
  • কিছু ক্ষেত্রে প্রোটোটাইপ হতে পারে null
  • যদি আপনি কোনও সদস্যের অ্যাক্সেসে কোনও সদস্য অ্যাক্সেস করেন এবং অবজেক্টটিতে সেই সদস্য না থাকে তবে অবজেক্টটি তার প্রোটোটাইপ থেকে পিছিয়ে যায়, বা প্রোটোটাইপ নਾਲ হলে থামিয়ে দেয়।
  • prototypeএকটি বস্তুর সদস্য সাধারণত হয় না বস্তুর প্রোটোটাইপ।
  • বরং prototypeফাংশন অবজেক্ট এফের সদস্য হ'ল সেই বস্তু যা দ্বারা নির্মিত বস্তুর প্রোটোটাইপ হয়ে যাবে new F()
  • কিছু বাস্তবায়নে উদাহরণগুলি এমন কোনও __proto__সদস্য পান যা তাদের প্রোটোটাইপ দেয়। (এটি এখন অবচয় করা হয়েছে it এটির উপর নির্ভর করবেন না))
  • ফাংশন অবজেক্টস prototypeযখন তৈরি হয় তখন তাদের ব্র্যান্ড-নতুন ডিফল্ট অবজেক্ট বরাদ্দ করা হয়।
  • অবশ্যই কোনও ফাংশন অবজেক্টের প্রোটোটাইপ অবশ্যই Function.prototype

আসুন যোগফল দেওয়া যাক।

  • প্রোটোটাইপ Objectহয়Function.prototype
  • Object.prototype হ'ল অবজেক্ট প্রোটোটাইপ অবজেক্ট।
  • প্রোটোটাইপ Object.prototypeহয়null
  • এর প্রোটোটাইপ Functionহ'ল Function.prototype- এটি এমন বিরল পরিস্থিতিগুলির মধ্যে একটি যেখানে Function.prototypeপ্রকৃতপক্ষে প্রোটোটাইপ Function!
  • Function.prototype ফাংশন প্রোটোটাইপ অবজেক্ট।
  • প্রোটোটাইপ Function.prototypeহয়Object.prototype

ধরা যাক আমরা একটি ফাংশন ফু তৈরি করি।

  • প্রোটোটাইপ Fooহয় Function.prototype
  • Foo.prototype ফু প্রোটোটাইপ অবজেক্ট।
  • প্রোটোটাইপ Foo.prototypeহয় Object.prototype

ধরা যাক আমরা বলি new Foo()

  • নতুন বস্তুর প্রোটোটাইপটি হ'ল Foo.prototype

তা নিশ্চিত হয়ে নিন। আসুন এটি আঁকুন। ডিম্বাশয় হ'ল বস্তু দৃষ্টান্ত। প্রান্তগুলির __proto__অর্থ হয় "প্রোটোটাইপ" বা prototypeঅর্থ "এর prototypeসম্পত্তি"।

এখানে চিত্র বর্ণনা লিখুন

রানটাইম যা করতে হবে তা হ'ল সেই সমস্ত অবজেক্ট তৈরি করা এবং সেই অনুসারে তাদের বিভিন্ন বৈশিষ্ট্য নির্ধারণ করা। আমি নিশ্চিত আপনি কীভাবে এটি সম্পন্ন হবে তা দেখতে পারবেন।

এখন আসুন এমন একটি উদাহরণ দেখুন যা আপনার জ্ঞান পরীক্ষা করে।

function Car(){ }
var honda = new Car();
print(honda instanceof Car);
print(honda.constructor == Car);

এই মুদ্রণ কি?

আচ্ছা, instanceofমানে কি? honda instanceof Carমানে " এর প্রোটোটাইপ চেইনে Car.prototypeকোনও বস্তুর সমান honda?"

হ্যাঁ তাই হয়। hondaএর প্রোটোটাইপ হ'ল Car.prototype, তাই আমরা শেষ করেছি। এই সত্য প্রিন্ট।

দ্বিতীয়টির কী হবে?

honda.constructorঅস্তিত্ব নেই তাই আমরা প্রোটোটাইপের সাথে পরামর্শ করি, যা Car.prototype। যখন Car.prototypeবস্তুটি তৈরি করা হয়েছিল তখন এটি স্বয়ংক্রিয়ভাবে constructorসমান সম্পত্তি দেওয়া হয়েছিল Car, সুতরাং এটি সত্য।

এখন এই কি?

var Animal = new Object();
function Reptile(){ }
Reptile.prototype = Animal;
var lizard = new Reptile();
print(lizard instanceof Reptile);
print(lizard.constructor == Reptile);

এই প্রোগ্রামটি কী মুদ্রণ করে?

আবার, এর lizard instanceof Reptileঅর্থ " এর প্রোটোটাইপ চেইনে Reptile.prototypeকোনও বস্তুর সমান lizard?"

হ্যাঁ তাই হয়। lizardএর প্রোটোটাইপ হ'ল Reptile.prototype, তাই আমরা শেষ করেছি। এই সত্য প্রিন্ট।

এখন, কি সম্পর্কে

print(lizard.constructor == Reptile);

আপনি মনে করতে পারেন যে এটি সত্যও প্রিন্ট করে, যেহেতু lizardএটি নির্মিত হয়েছিল new Reptileতবে আপনি ভুল হবেন। এটি যুক্তিযুক্ত।

  • না lizardএকটি আছে constructorসম্পত্তি? না। সুতরাং আমরা প্রোটোটাইপ তাকান।
  • এর প্রোটোটাইপ lizardহয় Reptile.prototypeযা, Animal
  • না Animalএকটি আছে constructorসম্পত্তি? না। সুতরাং আমরা এটি প্রোটোটাইপ তাকান।
  • এর প্রোটোটাইপ Animalহ'ল Object.prototype, এবং Object.prototype.constructorএটি রানটাইম দ্বারা তৈরি এবং সমান Object
  • সুতরাং এই প্রিন্ট মিথ্যা।

আমাদের Reptile.prototype.constructor = Reptile;সেখানে কিছু সময় বলা উচিত ছিল, কিন্তু আমাদের মনে নেই!

নিশ্চিত হয়ে নিন যে সবগুলি আপনার কাছে বোধগম্য। এটি এখনও বিভ্রান্তিকর হলে কিছু বাক্স এবং তীর আঁকুন।

অন্যান্য অত্যন্ত বিভ্রান্তিকর জিনিসটি হ'ল, যদি আমি console.log(Function.prototype)এটি কোনও ফাংশন প্রিন্ট করি তবে যখন আমি console.log(Object.prototype)এটি প্রিন্ট করি তখন কোনও বস্তু মুদ্রিত হয়। কেন Function.prototypeএকটি ফাংশন যখন এটি একটি বস্তু বোঝানো হয়েছিল?

ফাংশন প্রোটোটাইপ একটি ফাংশন হিসাবে সংজ্ঞায়িত করা হয় যা ডাকা হলে ফিরে আসে undefined। আমরা ইতিমধ্যে জানি যে Function.prototypeহয় Functionপ্রোটোটাইপ, আশ্চর্যের ব্যাপার যে। সুতরাং Function.prototype()আইনসম্মত, এবং যখন আপনি এটি করেন, আপনি undefinedফিরে পাবেন। সুতরাং এটি একটি ফাংশন।

Objectপ্রোটোটাইপ এই সম্পত্তি নেই; এটি কলযোগ্য নয়। এটা ঠিক একটি বিষয়।

যখন আপনি console.log(Function.prototype.constructor)এটি আবার একটি ফাংশন।

Function.prototype.constructorঠিক Function, স্পষ্টতই। এবং Functionএকটি ফাংশন।

এখন আপনি কীভাবে এটি তৈরি করতে কিছু ব্যবহার করতে পারেন (মন = ফুঁকানো)।

আপনি এটি অতিরিক্ত চিন্তা করছেন । যা যা প্রয়োজন তা হ'ল রানটাইম শুরু হওয়ার সাথে সাথে একগুচ্ছ অবজেক্ট তৈরি করে। অবজেক্টস কেবল সারণী যা অবজেক্টগুলির সাথে স্ট্রিংগুলিকে যুক্ত করে are যখন রানটাইম শুরুর, সব কি আছে কয়েক ডজন ফাঁকা বস্তু তৈরি করুন এবং তারপর বরাদ্দ শুরু prototype, __proto__, constructor, এবং তাই প্রতিটি বস্তুর বৈশিষ্ট্যাবলী উপর যতক্ষণ না তারা গ্রাফ যে, তারা করতে হবে না।

আপনি যে চিত্রটি উপরে আমি দিয়েছি তা যদি আপনি গ্রহণ করেন এবং constructorএটিতে প্রান্তগুলি যুক্ত করেন তবে এটি সহায়ক হবে। আপনি তাড়াতাড়ি দেখতে পাবেন যে এটি একটি খুব সাধারণ অবজেক্ট গ্রাফ এবং রানটাইমটি তৈরি করতে কোনও সমস্যা হবে না।

একটি ভাল অনুশীলন এটি নিজেই করা হবে। এখানে, আমি আপনাকে শুরু করব। আমরা my__proto__"প্রোটোটাইপ অবজেক্ট" এবং myprototype"প্রোটোটাইপ সম্পত্তি " এর অর্থ ব্যবহার করব ।

var myobjectprototype = new Object();
var myfunctionprototype = new Object();
myfunctionprototype.my__proto__ = myobjectprototype;
var myobject = new Object();
myobject.myprototype = myobjectprototype;

ইত্যাদি। "বাস্তব" জাভাস্ক্রিপ্ট অন্তর্নির্মিত অবজেক্টের মতো একই টপোলজি রয়েছে এমন একটি সামগ্রীর জন্য আপনি কী এই প্রোগ্রামটির বাকী অংশটি পূরণ করতে পারেন? আপনি যদি এটি করেন তবে আপনি এটি খুঁজে পাওয়া অত্যন্ত সহজ।

জাভাস্ক্রিপ্টের অবজেক্টগুলি কেবলমাত্র সারণী যা অন্য বস্তুর সাথে স্ট্রিংগুলিকে সংযুক্ত করে । এটাই! এখানে কোন যাদু নেই। আপনি নিজেকে গিঁটে আবদ্ধ করছেন কারণ আপনি এমন প্রতিবন্ধকতাগুলি কল্পনা করছেন যা বাস্তবে অস্তিত্ব নেই, যেমন প্রতিটি বস্তু একজন কনস্ট্রাক্টর দ্বারা তৈরি করতে হয়েছিল।

ফাংশনগুলি কেবলমাত্র এমন বস্তু যাগুলির একটি অতিরিক্ত ক্ষমতা রয়েছে: বলা যেতে পারে। সুতরাং আপনার সামান্য সিমুলেশন প্রোগ্রামটি দেখুন এবং .mycallableপ্রতিটি বস্তুর সাথে একটি সম্পত্তি যুক্ত করুন যা এটি কলযোগ্য কিনা তা নির্দেশ করে। এটা ঐটার মতই সহজ.


9
অবশেষে, একটি সংক্ষিপ্ত, সংক্ষিপ্ত, জাভাস্ক্রিপ্টের ব্যাখ্যা বুঝতে সহজ! অসাধারণ! কীভাবে আমাদের মধ্যে কেউ বিভ্রান্ত হতে পারে? :) যদিও সমস্ত গম্ভীরতার মধ্যে, বস্তুগুলি সন্ধানের টেবিলগুলি হ'ল শেষ বিটটি হ'ল মূল বিষয়। পাগলামির একটি পদ্ধতি আছে --- তবে এটি এখনও উন্মাদতা ...
গ্রেগ বার্গার্ট

4
@ গ্রেগবার্গার্ট: আমি সম্মত হই যে এটি প্রথমে জটিল দেখায়, তবে জটিলতা হ'ল সাধারণ নিয়মের ফলাফল। প্রতিটি বস্তুর ক __proto____proto__বস্তুর প্রোটোটাইপ এর নাল হয়। __proto__এর new X()হয় X.prototype। সমস্ত ফাংশন অবজেক্টের __proto__ফাংশন প্রোটোটাইপ নিজেই ফাংশন প্রোটোটাইপ ছাড়া। Objectএবং Functionএবং ফাংশন প্রোটোটাইপ হ'ল ফাংশন। এই নিয়মগুলি সমস্ত সোজা, এবং তারা প্রাথমিক বস্তুর গ্রাফের টপোলজি নির্ধারণ করে।
এরিক লিপার্ট

6

আপনার কাছে ইতিমধ্যে অনেক দুর্দান্ত উত্তর রয়েছে তবে আমি কীভাবে এই সমস্ত কাজ করে সে সম্পর্কে আপনার উত্তরের একটি সংক্ষিপ্ত এবং স্পষ্ট উত্তর দিতে চাই, এবং সেই উত্তরটি হল:

যাদু !!!

সত্যিই, এটি।

ECMAScript এক্সিকিউশন ইঞ্জিন প্রয়োগকারী ব্যক্তিদের ECMAScript এর নিয়মগুলি প্রয়োগ করতে হবে , তবে তাদের প্রয়োগের মধ্যে সেগুলি মেনে চলবে না ।

ইসমাস্ক্রিপ্ট স্পেসিফিকেশন বলে যে বি থেকে একটি উত্তরাধিকার সূত্রে পাওয়া যায় তবে বি এ এর ​​উদাহরণ? সমস্যা নেই! এর প্রোটোটাইপ পয়েন্টার সহ প্রথম তৈরি করুন, এ এর NULLউদাহরণ হিসাবে বি তৈরি করুন, তারপরে বি এর দিকে নির্দেশ করতে A এর প্রোটোটাইপ পয়েন্টারটি ঠিক করুন। সহজ কিছু.

আপনি বলছেন, তবে অপেক্ষা করুন, ইসিএমএসক্রিপ্টে প্রোটোটাইপ পয়েন্টার পরিবর্তন করার কোনও উপায় নেই! কিন্তু, এখানে জিনিস: এই কোড সঞ্চালিত না উপর নাম ECMAScript ইঞ্জিন, এই কোড হল ECMAScript প্রোগ্রামিং ইঞ্জিন। এটা তোলে নেই বস্তুর অভ্যন্তরীণ এক্সেস ইঞ্জিনের উপর নাম ECMAScript কোড চলমান নেই যে আছে। সংক্ষেপে: এটি যা খুশি করতে পারে।

যাইহোক, আপনি যদি সত্যিই চান তবে আপনাকে কেবল এটি করতে হবে: পরে, আপনি উদাহরণস্বরূপ আপনার অভ্যন্তরীণ মেমরিটি ডাম্প করতে পারেন এবং প্রতিবার আপনার ECMAScript ইঞ্জিনটি শুরু করার পরে এই ডাম্পটি লোড করতে পারেন।

নোট করুন যে এগুলি এখনও প্রয়োগ হয়, এমনকি যদি ECMAScript ইঞ্জিন নিজেই ECMAScript তে লেখা থাকে (যেমন বাস্তবে মোজিলা নার্কিসাসের ক্ষেত্রে এটি রয়েছে)। এমনকি, তখন এর নাম ECMAScript কোডটি কার্যকরী ইঞ্জিন এখনও ইঞ্জিন এটা করা হয় পূর্ণ প্রবেশাধিকার আছে বাস্তবায়ন , যদিও এটি অবশ্যই ইঞ্জিন এটা হয় অ্যাক্সেস নেই চলমান


3

ইসিএমএ স্পেক 1 থেকে

ইসমাস্ক্রিপ্টে যথাযথ শ্রেণি যেমন সি ++, স্মার্টটাক বা জাভা নেই, তবে এমন কনস্ট্রাক্টরদের সমর্থন করে যা কোড নির্বাহের মাধ্যমে অবজেক্ট তৈরি করে যা বস্তুর জন্য স্টোরেজ বরাদ্দ করে এবং তাদের বৈশিষ্ট্যগুলিতে প্রাথমিক মান নির্ধারণ করে তাদের সমস্ত বা কিছু অংশ আরম্ভ করে। কনস্ট্রাক্টর সহ সমস্ত ফাংশন হ'ল অবজেক্ট, তবে সমস্ত অবজেক্ট কনস্ট্রাক্টর নয়।

আমি দেখতে পাচ্ছি না কিভাবে এটি আরও পরিষ্কার হতে পারে !!! </sarcasm>

আরও নীচে আমরা দেখতে পাই:

প্রোটোটাইপ একটি প্রোটোটাইপ এমন এক জিনিস যা কাঠামো, রাষ্ট্র এবং আচরণের উত্তরাধিকার ECMAScript এ প্রয়োগ করতে ব্যবহৃত হয়। যখন কোনও কনস্ট্রাক্টর কোনও বস্তু তৈরি করে, তখন সেই বস্তু সম্পত্তির রেফারেন্সগুলি সমাধান করার উদ্দেশ্যে নির্মাতার সাথে সম্পর্কিত প্রোটোটাইপকে স্পষ্টভাবে উল্লেখ করে। কনস্ট্রাক্টরের সম্পর্কিত প্রোটোটাইপ প্রোগ্রাম এক্সপ্রেশন কনস্ট্রাক্টর.প্রোটোটাইপ দ্বারা উল্লেখ করা যেতে পারে, এবং কোনও বস্তুর প্রোটোটাইপে যুক্ত বৈশিষ্ট্যগুলি ভাগের মাধ্যমে, সমস্ত বস্তু প্রোটোটাইপ ভাগ করে ভাগ করা হয়।

সুতরাং আমরা দেখতে পাচ্ছি যে প্রোটোটাইপ হ'ল একটি বস্তু, তবে প্রয়োজনীয় কোনও ফাংশন অবজেক্ট নয়।

এছাড়াও, আমরা এই আকর্ষণীয় শিরোনাম আছে

http://www.ecma-international.org/ecma-262/8.0/index.html#sec-object-objects

অবজেক্ট কনস্ট্রাক্টর হ'ল% অবজেক্ট% ইন্টারনসিক অবজেক্ট এবং গ্লোবাল অবজেক্টের অবজেক্ট প্রোপার্টিটির প্রাথমিক মান।

এবং

ফাংশন কনস্ট্রাক্টর হ'ল% ফাংশন% অন্তর্নিহিত বস্তু এবং গ্লোবাল অবজেক্টের ফাংশন বৈশিষ্ট্যের প্রাথমিক মান।


এখন এটা। ইসিএমএ 6 আপনাকে ক্লাস তৈরি করতে এবং সেগুলি থেকে অবজেক্টগুলি ইনস্ট্যান্ট করার অনুমতি দেয়।
ncmathadistist

2
@ncmathsadist ES6 ক্লাস কেবল একটি সিনট্যাকটিক চিনি, শব্দার্থবিজ্ঞান একই।
হামজা ফাতমি

1
sarcasmঅন্যথায় আপনার মনিকার, এই পাঠ্যটি একজন শিক্ষানবিশকে সত্যই অস্বচ্ছ is
রবার্ট হার্ভে

সত্য, অসুস্থ আরও পরে যুক্ত করুন, কিছু খনন করা দরকার
ইওয়ান

1
ERM? এটি উল্লেখ করতে যে এটি ডক থেকে পরিষ্কার নয়
ইভান

1

নিম্নলিখিত ধরণের জাভাস্ক্রিপ্টে প্রতিটি মান অন্তর্ভুক্ত:

  • boolean
  • number
  • undefined(যার মধ্যে একক মান অন্তর্ভুক্ত undefined)
  • string
  • symbol (অ্যাবস্ট্রাক্ট অনন্য "জিনিস" যা রেফারেন্সের সাথে তুলনা করা হয়)
  • object

জাভাস্ক্রিপ্টের প্রতিটি বস্তুর (অর্থাত্ সবকিছু) একটি প্রোটোটাইপ রয়েছে যা এক ধরণের অবজেক্ট।

প্রোটোটাইপ ফাংশন, যা বস্তুর এক ধরনের রয়েছে 1

অবজেক্টগুলির একটি কনস্ট্রাক্টরও রয়েছে যা একটি ফাংশন এবং তাই এক ধরণের অবজেক্ট।

নেস্টেড

এটি সমস্ত পুনরাবৃত্তিমূলক, তবে বাস্তবায়ন স্বয়ংক্রিয়ভাবে এটি করতে সক্ষম হয় কারণ জাভাস্ক্রিপ্ট কোডের বিপরীতে, এটি জাভাস্ক্রিপ্ট ফাংশনগুলি কল না করেই বস্তু তৈরি করতে পারে (যেহেতু বস্তুগুলি কেবল বাস্তবায়ন নিয়ন্ত্রণ করে যে মেমরি)।

বেশিরভাগ গতিশীল টাইপ করা ভাষায় অবজেক্ট সিস্টেমগুলি বিজ্ঞপ্তি 2 এর মতো। উদাহরণস্বরূপ, পাইথনে, ক্লাসগুলি বস্তু এবং ক্লাসগুলির শ্রেণি হয় type, তাই typeএটি নিজের একটি উদাহরণ instance

সর্বোত্তম ধারণাটি হ'ল যে ভাষা সরবরাহ করে তা কেবলমাত্র সেই সরঞ্জামগুলি ব্যবহার করা এবং তারা কীভাবে সেখানে পেল সে সম্পর্কে খুব বেশি চিন্তা না করে।

1 কার্যকারিতা বরং বিশেষ কারণ তারা কলযোগ্য এবং এগুলি একমাত্র মান যা অস্বচ্ছ ডেটা (তাদের শরীর এবং সম্ভবত একটি বন্ধকরণ) ধারণ করতে পারে।

2 এটি প্রকৃতপক্ষে নির্যাতনকারী, ফিতাটি পিছনে পিছনে বাঁকানো আরও বেশি, তবে "বিজ্ঞপ্তি" যথেষ্ট কাছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.