ফেব্রুয়ারী ২০১২ সম্পাদনা করুন: নীচের উত্তরগুলি এখন আর সঠিক নয়। __প্রোট__ ECMAScript 6 এ "আদর্শিক alচ্ছিক" হিসাবে যুক্ত করা হচ্ছে যার অর্থ এটি কার্যকর করার প্রয়োজন হয় না তবে যদি তা হয় তবে অবশ্যই এটি প্রদত্ত বিধিগুলির সেটটি অনুসরণ করবে। এটি বর্তমানে অমীমাংসিত তবে কমপক্ষে এটি আনুষ্ঠানিকভাবে জাভাস্ক্রিপ্টের স্পেসিফিকেশনের অংশ হবে।
জাভাস্ক্রিপ্ট অভ্যন্তরীণ জ্ঞানের ক্ষেত্রে এই প্রশ্নটি পৃষ্ঠতলের চেয়ে মনে হয় এবং বেশিরভাগ লোকের বেতন গ্রেডের বাইরে অনেক জটিল।
prototypeএকটি বস্তুর সম্পত্তি যখন যে বস্তুর নতুন শিশু বস্তু তৈরি ব্যবহার করা হয়। এটি পরিবর্তন করলে তা বস্তুটিতেই প্রতিফলিত হয় না, বরং সেই বস্তুটি যখন অন্য বস্তুর জন্য নির্মাতা হিসাবে ব্যবহৃত হয় এবং এর কোনও বিদ্যমান অবজেক্টের প্রোটোটাইপ পরিবর্তনে কোনও ব্যবহার হয় না তখন তা প্রতিফলিত হয়।
function myFactory(){};
myFactory.prototype = someOtherObject;
var newChild = new myFactory;
newChild.__proto__ === myFactory.prototype === someOtherObject; //true
অবজেক্টগুলির একটি অভ্যন্তরীণ [[প্রোটোটাইপ]] সম্পত্তি রয়েছে যা বর্তমান প্রোটোটাইপের দিকে নির্দেশ করে। এটি যেভাবে কাজ করে তা হ'ল যখনই কোনও বস্তুর কোনও সম্পত্তি বলা হয় তখন এটি বস্তু থেকে শুরু হবে এবং তারপরে [[প্রোটোটাইপ]] শৃঙ্খলে চলে যাবে যতক্ষণ না এটি কোনও মিল খুঁজে পায়, বা ব্যর্থ হয় না, মূল অবজেক্ট প্রোটোটাইপের পরে। জাভাস্ক্রিপ্ট এভাবে রানটাইম বিল্ডিং এবং অবজেক্টগুলির পরিবর্তন করার অনুমতি দেয়; এটির যা প্রয়োজন তা অনুসন্ধান করার জন্য এটির পরিকল্পনা রয়েছে।
__proto__সম্পত্তি (বর্তমানে অনেক) কিছু বাস্তবায়নের বিদ্যমান: কোনো মোজিলা বাস্তবায়ন, সমস্ত WebKit বেশী আমি জানি, কিছু অন্যদের। এই সম্পত্তিটি অভ্যন্তরীণ [[প্রোটোটাইপ]] বৈশিষ্ট্যকে নির্দেশ করে এবং অবজেক্টগুলিতে সংশোধন পরবর্তী পোস্টের অনুমতি দেয়। এই শৃঙ্খলিত দেখার কারণে কোনও বৈশিষ্ট্য এবং ফাংশন তাত্ক্ষণিকভাবে প্রোটোটাইপের সাথে মেলে।
এই বৈশিষ্ট্যটি এখন মানসম্পন্ন হওয়ার পরেও জাভাস্ক্রিপ্টের প্রয়োজনীয় অংশ নয়, এবং এটি সমর্থনকারী ভাষাগুলিতে আপনার কোডটিকে "বিনা চাপড়িত" বিভাগে ফেলে দেওয়ার উচ্চ সম্ভাবনা রয়েছে। জেএস ইঞ্জিনগুলিকে কোড শ্রেণীবদ্ধ করার জন্য তাদের সর্বোত্তম চেষ্টা করতে হবে, বিশেষত "হট" কোড যা খুব ঘন ঘন অ্যাক্সেস করা হয় এবং আপনি যদি সংশোধন করার মতো অভিনব কিছু করছেন তবে __proto__তারা আপনার কোডটি একেবারেই অনুকূলিত করবে না।
এই পোস্টগুলিতে https://bugzilla.mozilla.org/show_bug.cgi?id=607863 বর্তমান বাস্তবায়ন __proto__এবং তাদের মধ্যে পার্থক্য সম্পর্কে বিশেষভাবে আলোচনা করেছে। প্রতিটি বাস্তবায়ন এটি আলাদাভাবে করে, কারণ এটি একটি শক্ত এবং সমাধান না করা সমস্যা। জাভাস্ক্রিপ্ট সবকিছু একটি ব্যতীত চপল হয়।) সিনট্যাক্স খ।) হোস্ট বস্তু (করে DOM টেকনিক্যালি জাভাস্ক্রিপ্ট বাইরে বিদ্যমান) এবং গ।) __proto__। বাকীটি সম্পূর্ণরূপে আপনার এবং অন্য প্রতিটি বিকাশকারীর হাতে রয়েছে, তাই আপনি দেখতে পাচ্ছেন যে কেন __proto__ঘাড়ে থাম্বের মতো লাঠি ফেলে।
একটি জিনিস যা এর __proto__জন্য মঞ্জুরি দেয় তা অন্যথায় করা অসম্ভব: রান্টটাইমে কোনও অবজেক্টের প্রোটোটাইপ এর নির্মাতা থেকে পৃথক করে রাখা। এটি একটি গুরুত্বপূর্ণ ব্যবহারের কেস এবং এটি প্রাথমিক কারণগুলির মধ্যে একটি __proto__যা ইতিমধ্যে মারা যায় নি। এটি যথেষ্ট গুরুত্বপূর্ণ যে এটি সুরেলা তৈরির ক্ষেত্রে একটি গুরুতর আলোচনার বিষয় হয়ে দাঁড়িয়েছে বা শীঘ্রই ECMAScript হিসাবে পরিচিত হবে 6.. সৃষ্টির সময় কোনও বস্তুর প্রোটোটাইপ নির্দিষ্ট করার ক্ষমতা জাভাস্ক্রিপ্টের পরবর্তী সংস্করণের অংশ হবে এবং এটি হবে বেলগুলি নির্দেশ করে যে __proto__দিনগুলি আনুষ্ঠানিকভাবে গণনা করা হয়।
স্বল্প মেয়াদে, আপনি __proto__যদি এটি সমর্থন করে এমন ব্রাউজারগুলিকে লক্ষ্য করে থাকেন তবে আপনি ব্যবহার করতে পারেন (আইআই নয়, এবং কোনও আইই কখনও তা করবে না)। সম্ভবত এটি আগামী 10 বছর ওয়েবকিট এবং মোজেটে কাজ করবে কারণ 2013 পর্যন্ত ES6 চূড়ান্ত হবে না।
ব্রেন্ডন আইচ - পুনরায়: ES5 তে নতুন অবজেক্ট পদ্ধতির পদ্ধতির :
দুঃখিত, ... তবে নিষ্পত্তিযোগ্য __proto__, অবজেক্ট ইনিশিয়ালার ব্যবহারের ক্ষেত্রে (যেমন, কোনও নতুন অবজেক্টে এখনও পৌঁছনীয় নয়, ES5 এর অবজেক্ট.ক্রিয়েটের সাথে সাদৃশ্য) এক ভয়ঙ্কর ধারণা। আমি এটি __proto__12 বছর আগে স্থিতাবস্থায় ডিজাইন এবং প্রয়োগ করে লিখেছি ।
... স্তরীকরণের অভাব একটি সমস্যা (একটি কী দিয়ে জেএসএন ডেটা বিবেচনা করুন "__proto__")। আরও খারাপ, পরিবর্তনের অর্থ বাস্তবায়নগুলি অবশ্যই ইলুপিং এড়ানোর জন্য চক্রীয় প্রোটোটাইপ চেইনের জন্য পরীক্ষা করতে হবে। [অসীম পুনরাবৃত্তির জন্য ধ্রুবক চেকগুলি প্রয়োজনীয়]
অবশেষে, __proto__বিদ্যমান অবজেক্টের পরিবর্তনের ফলে নতুন প্রোটোটাইপ অবজেক্টে অ-জেনেরিক পদ্ধতিগুলি ভেঙে যেতে পারে, যা সম্ভবত রিসিভার (ডাইরেক্ট) অবজেক্টে কাজ করতে পারে না যার __proto__জন্য সেট করা হচ্ছে। এটি সাধারণভাবে অভ্যাস যা সাধারণভাবে ইচ্ছাকৃত ধরণের বিভ্রান্তির একটি রূপ।