জাভাস্ক্রিপ্টের একটি বড় সুবিধা হ'ল এটি একটি প্রোটোটাইপ ভিত্তিক ভাষা।
তবে জাভাস্ক্রিপ্ট প্রোটোটাইপ ভিত্তিক এর অর্থ কী এবং কেন এটি একটি সুবিধা?
জাভাস্ক্রিপ্টের একটি বড় সুবিধা হ'ল এটি একটি প্রোটোটাইপ ভিত্তিক ভাষা।
তবে জাভাস্ক্রিপ্ট প্রোটোটাইপ ভিত্তিক এর অর্থ কী এবং কেন এটি একটি সুবিধা?
উত্তর:
প্রোটোটাইপাল উত্তরাধিকার হ'ল অবজেক্ট-ওরিয়েন্টেড কোড পুনরায় ব্যবহারের একধরণের । প্রোটোটাইপাল উত্তরাধিকার ব্যবহারের জন্য জাভাস্ক্রিপ্ট অন্যতম [মূলধারার] অবজেক্ট-ভিত্তিক ভাষা languages প্রায় সমস্ত অন্যান্য বস্তু-কেন্দ্রিক ভাষা ক্লাসিকাল।
ইন শাস্ত্রীয় উত্তরাধিকার , প্রোগ্রামার একটি বর্গ, যা একটি বস্তু সংজ্ঞায়িত লিখেছেন। একাধিক অবজেক্ট একই ক্লাস থেকে ইনস্ট্যান্ট করা যেতে পারে, তাই আপনার এক জায়গায় কোড রয়েছে যা আপনার প্রোগ্রামের বেশ কয়েকটি অবজেক্টকে বর্ণনা করে। ক্লাসগুলি এরপরে কোডের পুনঃব্যবহার করে আরও একটি শ্রেণিবিন্যাসে সংগঠিত করা যেতে পারে। আরও সাধারণ কোড একটি উচ্চ-স্তরের শ্রেণিতে সংরক্ষণ করা হয়, যেখান থেকে নিম্ন স্তরের শ্রেণিগুলি উত্তরাধিকার সূত্রে আসে। এর অর্থ হ'ল কোনও বস্তু একই বর্গের অন্যান্য অবজেক্টের সাথে তার পিতামাতার ক্লাসগুলির সাথে কোড ভাগ করছে।
ইন প্রটোটাইপ ইনহেরিটেন্স ফর্ম, বস্তু সরাসরি উত্তরাধিকারী অন্যান্য বস্তু থেকে। ক্লাস সম্পর্কে সমস্ত ব্যবসা চলে যায়। আপনি যদি একটি অবজেক্ট চান, আপনি কেবল একটি বস্তু লিখুন। তবে কোড পুনরায় ব্যবহার এখনও একটি মূল্যবান জিনিস, তাই অবজেক্টগুলিকে একটি শ্রেণিবিন্যাসের সাথে একত্রে লিঙ্ক করার অনুমতি দেওয়া হয়। জাভাস্ক্রিপ্টে, প্রতিটি বস্তুর একটি গোপন লিঙ্ক রয়েছে যা এটি তৈরি করেছে, একটি শৃঙ্খলা তৈরি করে। যখন কোনও বস্তুর কাছে এমন সম্পত্তির জন্য জিজ্ঞাসা করা হবে, তখন তার প্যারেন্ট অবজেক্টটি জিজ্ঞাসা করা হবে ... সম্পত্তিটি না পাওয়া পর্যন্ত বা মূল অবজেক্ট না পাওয়া পর্যন্ত ক্রমাগত শৃঙ্খলা অবলম্বন করা উচিত।
জাভাস্ক্রিপ্টের প্রতিটি ফাংশনে (যা তারা নিজেরাই বস্তু হয়) আসলে "প্রোটোটাইপ" নামে একটি সদস্য থাকে, যখন কোনও বস্তু যখন তাদের কাছে জিজ্ঞাসা করা হয় তখন মান প্রদানের জন্য দায়বদ্ধ। এই সদস্য থাকার ফলে কনস্ট্রাক্টর মেকানিজম (যার দ্বারা ফাংশনগুলি থেকে অবজেক্টগুলি নির্মিত হয়) কাজ করতে দেয়। কোনও ফাংশন অবজেক্টের প্রোটোটাইপে একটি সম্পত্তি যুক্ত করা এটি নির্মাণকৃত বস্তুর পাশাপাশি এটির উত্তরাধিকার সূত্রে প্রাপ্ত সমস্ত বস্তুর জন্য উপলব্ধ করে available
সুবিধাদি
প্রোটোটাইপাল উত্তরাধিকার কেন কোড-পুনঃব্যবহারের সুবিধাজনক ফর্ম তা নিয়ে একটি কঠোর এবং দ্রুত নিয়ম নাও থাকতে পারে। কোড পুনঃব্যবহার নিজেই সুবিধাজনক এবং প্রোটোটাইপাল উত্তরাধিকার এটি সম্পর্কে চালিত হওয়ার একটি বুদ্ধিমান উপায়। আপনি তর্ক করতে পারেন যে প্রোটোটাইপাল উত্তরাধিকার কোড পুনরায় ব্যবহারের মোটামুটি সহজ মডেল এবং সেই কোডটি সরাসরি উপায়ে ভারী পুনরায় ব্যবহার করা যেতে পারে । তবে শাস্ত্রীয় ভাষা অবশ্যই এটি সম্পাদন করতে সক্ষম।
সিডনোট: @ অ্যান্ড্রু হেজেস একটি ভাল বিষয় তুলে ধরেছে যে আসলে অনেকগুলি প্রোটোটাইপাল ভাষা রয়েছে। এই অন্যদের উপস্থিত রয়েছে তা লক্ষ করার মতো, তবে এগুলির মধ্যে কোনওটিই মূলধারার কাছাকাছি কিছু নয় বলে মনে রাখা উচিত। নিউটনস্ক্রিপ্টের মনে হয়েছিল কিছু সময়ের জন্য কিছু ট্র্যাকশন রয়েছে তবে এর প্ল্যাটফর্মের সাথে তার মৃত্যু হয়েছিল। প্রোটোটাইপাল ক্ষমতা যোগ করার উপায়ে কিছু আধুনিক ভাষাগুলি প্রসারিত করাও সম্ভব।
একটি প্রোটোটাইপ-ভিত্তিক ভাষা, ক্লাস বনাম বস্তুর পার্থক্য তৈরি করে না: এতে কেবল অবজেক্ট থাকে। একটি প্রোটোটাইপ-ভিত্তিক ভাষার প্রোটোটাইপিকাল অবজেক্টের ধারণা থাকে, এটি একটি টেম্পলেট হিসাবে ব্যবহৃত হয় যা থেকে কোনও নতুন অবজেক্টের প্রাথমিক বৈশিষ্ট্য পাওয়া যায়। যে কোনও অবজেক্ট তার নিজস্ব বৈশিষ্ট্য নির্দিষ্ট করে দিতে পারে, আপনি এটি তৈরির সময় বা রান সময়ে। তদ্ব্যতীত, যে কোনও বস্তু দ্বিতীয় বস্তুর প্রথম বস্তুর বৈশিষ্ট্য ভাগ করে নেওয়ার সুযোগ দিয়ে অন্য কোনও অবজেক্টের প্রোটোটাইপ হিসাবে যুক্ত হতে পারে।
প্রোটোটাইপ-ভিত্তিক প্রোগ্রামিং হ'ল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের একটি স্টাইল যেখানে ক্লাস উপস্থিত নেই এবং আচরণ পুনরায় ব্যবহার (বা ক্লাস-ভিত্তিক ভাষায় উত্তরাধিকার) প্রোটোটাইপ হিসাবে পরিবেশনকারী বিদ্যমান বস্তুগুলির ক্লোনিং দ্বারা সঞ্চালিত হয়।
সুবিধা / অসুবিধাটি হ'ল, আমরা রান টাইমে নতুন ধরণের অবজেক্ট তৈরি করতে পারি ক্লাস (স্ট্যাটিক কোড) সংজ্ঞায়নের প্রয়োজন ছাড়াই can বেশিরভাগ বৈশিষ্ট্যগুলির মতো এটি বিকাশকারীর পক্ষে এটি কোনও সুবিধা / অসুবিধায় পরিণত করা।
উপরে সম্ভব কারণ কারণ জাভা স্ক্রিপ্টে অবজেক্টগুলি মূলত ফাংশন (ক্লোজারও খুব)।
আপনি যদি নতুন অবজেক্ট তৈরির জন্য ক্লাইলের পরিবর্তে রানটাইমের সময় অবজেক্টগুলি ব্যবহার করেন তবে এটি কোনও বিবরণ না জেনে কোনও অবজেক্ট বাড়ানোর সম্ভাবনা উন্মুক্ত করে। অবশ্যই ব্যবহারের উপর নির্ভর করে এটি খুব দ্রুত অসুবিধায় পরিণত হতে পারে। আমি এখানে ভাষা সম্পর্কে কোনও অনুমান করি না, সুতরাং এটি জাভাস্ক্রিপ্ট বাদে অন্য ভাষার ক্ষেত্রে প্রযোজ্য যা গতিশীল নয়।
myobject.prototype=unkownobject;
myobject.newproperty=1;
আপনি যে কোনও জায়গা থেকে অবজেক্টটি পেতে পারেন; আপনার নিজস্ব কোড, নেটওয়ার্ক থেকে, ডাটাবেস থেকে, বাহ্যিক সংযোগ থেকে এবং আরও অনেক কিছু।
মনে রাখবেন যে কোনও জাভাস্ক্রিপ্টের মতো প্রোটোটাইপ উত্তরাধিকার প্রয়োগ করতে হবে না। জাভাস্ক্রিপ্টে, প্রোটোটাইপ অবজেক্টটি কেবল ভাগ করা হয়, উত্তরাধিকারীদের মধ্যে এর বৈশিষ্ট্যও রয়েছে। বিকল্পটি হ'ল প্রোটোটাইপের সমস্ত বৈশিষ্ট্যকে নতুন অবজেক্টে অনুলিপি করছে। প্রতিটি পদ্ধতির বিভিন্ন পরিস্থিতিতে এর শক্তি রয়েছে। আমি দ্বিতীয় দ্বিতীয়টি পছন্দ করি তবে জাভাস্ক্রিপ্ট যা করে তা তা নয়।
সমস্ত উত্তর পড়ার পরে এটি উপসংহার
1) উত্তরাধিকার যেখানে বস্তুগুলি অন্য বস্তু থেকে সরাসরি উত্তরাধিকার সূত্রে প্রাপ্ত হয়
2) এটি ক্লাস ব্যবহার করে না
3) এছাড়াও উদাহরণ ভিত্তিক প্রোগ্রামিং বা ক্লাসহীন প্রোটোটাইপ ওরিয়েন্টেড প্রোগ্রামিং বলা হয়
4) আচরণ পুনর্ব্যবহার প্রোটোটাইপ হিসাবে পরিবেশন বিদ্যমান বস্তু ক্লোনিং দ্বারা সম্পাদিত হয়
5) নতুন অবজেক্ট থেকে টেমপ্লেট হিসাবে ব্যবহৃত অবজেক্টটি প্রাথমিক বৈশিষ্ট্য পান