यहां लगभग सौ शब्दावली के मुद्दे हैं, ज्यादातर किसी के आसपास बनाए गए हैं (आप नहीं) अपने विचार को द बेस्ट की तरह बनाने की कोशिश कर रहे हैं।
सभी ऑब्जेक्ट ओरिएंटेड भाषाओं को कई अवधारणाओं से निपटने में सक्षम होना चाहिए:
- डेटा पर संबद्ध संचालन के साथ डेटा का इनकैप्सुलेशन, जिसे विभिन्न डेटा सदस्यों और सदस्य कार्यों के रूप में जाना जाता है, या डेटा और विधियों के रूप में, अन्य चीजों के बीच।
- विरासत, यह कहने की क्षमता कि ये वस्तुएं इन परिवर्तनों के लिए वस्तुओं के दूसरे सेट की तरह ही हैं
- बहुरूपता ("कई आकृतियाँ") जिसमें कोई वस्तु अपने लिए यह तय करती है कि किन विधियों को चलाना है, ताकि आप अपने अनुरोधों को सही ढंग से समझने के लिए भाषा पर निर्भर रह सकें।
अब, जहाँ तक तुलना करें:
पहली बात पूरे "वर्ग" बनाम "प्रोटोटाइप" प्रश्न है। यह विचार मूल रूप से सिमूला में शुरू हुआ, जहां एक वर्ग-आधारित पद्धति के साथ प्रत्येक वर्ग वस्तुओं का एक समूह का प्रतिनिधित्व करता था जो एक ही राज्य स्थान ("संभव मान" पढ़ें) और एक ही संचालन को साझा करता है, जिससे एक समतुल्य वर्ग बनता है। यदि आप स्मॉलटाक में वापस देखते हैं, चूंकि आप एक क्लास खोल सकते हैं और विधियाँ जोड़ सकते हैं, तो यह प्रभावी रूप से वही है जो आप जावास्क्रिप्ट में कर सकते हैं।
बाद में OO भाषाएँ स्थैतिक प्रकार की जाँच का उपयोग करने में सक्षम होना चाहती थीं, इसलिए हमें संकलन के समय एक निश्चित वर्ग की धारणा मिली। ओपन-क्लास संस्करण में, आपके पास अधिक लचीलापन था; नए संस्करण में, आपके पास संकलक पर कुछ प्रकार की शुद्धता की जांच करने की क्षमता थी जो अन्यथा परीक्षण की आवश्यकता होती थी।
"क्लास-बेस्ड" भाषा में, संकलन समय पर होता है। एक प्रोटोटाइप भाषा में, ऑपरेशनों को प्रोटोटाइप डेटा संरचना में संग्रहीत किया जाता है, जिसे कॉपी किया जाता है और रन समय पर संशोधित किया जाता है। संक्षेप में, हालांकि, एक वर्ग अभी भी सभी वस्तुओं का समतुल्य वर्ग है जो समान राज्य स्थान और विधियों को साझा करता है। जब आप प्रोटोटाइप में एक विधि जोड़ते हैं, तो आप प्रभावी रूप से एक नए तुल्यता वर्ग का एक तत्व बना रहे हैं।
अब, ऐसा क्यों? मुख्य रूप से क्योंकि यह रन टाइम में एक सरल, तार्किक, सुरुचिपूर्ण तंत्र के लिए बनाता है। अब, एक नई वस्तु बनाने के लिए , या एक नया वर्ग बनाने के लिए, आपको बस एक गहरी प्रति, सभी डेटा और प्रोटोटाइप डेटा संरचना की नकल करनी होगी। आपको विरासत और बहुरूपता कम या ज्यादा मुफ्त में मिलती हैं: विधि खोज में हमेशा नाम से विधि लागू करने के लिए एक शब्दकोश पूछना होता है।
जावास्क्रिप्ट / ECMA स्क्रिप्ट में समाप्त होने का कारण मूल रूप से यह है कि जब हम 10 साल पहले इस के साथ शुरू कर रहे थे, तो हम बहुत कम शक्तिशाली कंप्यूटर और बहुत कम परिष्कृत ब्राउज़रों के साथ काम कर रहे थे। प्रोटोटाइप-आधारित पद्धति को चुनना मतलब वस्तु अभिविन्यास के वांछनीय गुणों को संरक्षित करते समय दुभाषिया बहुत सरल हो सकता है।