2014-11-21 10 views
9

following answer to this questionclassical inheritance और prototypal inheritance के बीच अंतर को समझाते हुए एक शानदार काम करता है। यह समझने के लिए मुझे रूचि थी क्योंकि मैंने जावा में काम करना शुरू किया था, लेकिन जावास्क्रिप्ट पर चले गए।वर्ग प्रोटोटाइप विरासत-आधारित भाषा में उपयोग

अपने उत्तर में, वह prototypal inheritance के लिए कहता है, "कक्षाओं के बारे में सभी व्यवसाय दूर हो जाते हैं। यदि आप कोई वस्तु चाहते हैं, तो आप केवल एक वस्तु लिखते हैं।"

फिर भी इतना प्रलेखन और questions कैसे "वर्गों लिखने" के लिए कृपया Javascript में चल रहा है।

क्यों भाषा कुछ ऐसा नहीं है बनाने के लिए वहाँ धक्का है। मैं उन मामलों के ठोस उदाहरणों की तलाश में हूं जहां जेएस अनुप्रयोगों में कक्षाओं का उपयोग इस प्रोटोटाइप भाषा में अधिक समझदार है और एक गोल छेद में एक वर्ग चरम को अजीब रूप से फिट करने के लाभ हैं। जैसा कि अरविंद ने कहा है, लोग जावास्क्रिप्ट को अन्य लोगों की तुलना करके क्यों सीख रहे हैं, और जैसा कि इसका इरादा नहीं था ... और इस अभ्यास को क्यों प्रोत्साहित किया जाता है?

मुनाफा सवाल: क्यों कक्षाएं ECMAScript 6 में पेश किया जा रहा है?

+1

मेरा प्रश्न ठीक है। – Aravind

+0

उत्तर बहुत आसान है। एक आवश्यकता है (आपूर्ति और मांग नियम)। आवश्यकता क्यों है? आईएमएचओ क्योंकि प्रोटोटाइप विरासत सिर्फ प्राकृतिक नहीं है। वैसे भी यह मुख्य रूप से राय आधारित प्रश्न है और एसओ फिट नहीं है। – freakish

+1

@Growler: यहां तक ​​कि मैं लोगों को अक्सर जावास्क्रिप्ट भाषाओं है कि वे पहले से ही पता (सी ++, जावा) के साथ उसकी तुलना जानने की कोशिश की तरह महसूस किया है, इसलिए हम तो बस इस एक स्टैंडअलोन भाषा के रूप में नहीं सीख सकते हैं? – Aravind

उत्तर

6

कक्षाओं जैसे लोग।

कुछ भी नहीं है "और" या मूलरूप विरासत के बारे में "कम" प्राकृतिक, यह पूरी तरह से व्यक्तिपरक है। जेएस अपनी खुद की भाषा है, जैसे कि स्मॉलटाक और स्वयं के पास एक वस्तु होने के बारे में अलग-अलग विचार थे।

ES6 कक्षाएं सिंटेक्टिक चीनी हैं। वे जेएस में विरासत/आदि का उपयोग कैसे किया जाए, इसे सामान्य/साफ करें।

CoffeeScript की ही तरह, वे प्रमाण के कैसे OOP जे एस में किया जाता है, और इसे और अधिक लोगों की है कि मूलरूप विरासत के लिए इस्तेमाल नहीं कर रहे हैं के लिए परिचित करने का प्रयास।

+1

तो आप कह रहे हैं, क्योंकि कक्षाएं लोकप्रिय हैं इसे पेश किया जा रहा है? और जावास्क्रिप्ट के लिए इसकी कोई वास्तविक आवश्यकता नहीं है? यह जावास्क्रिप्ट का उपयोग करने के लिए अधिक लोगों को खींचने के साधन के रूप में पेश किया गया है? – Aravind

+4

@ अरविंद सही, जेएस कक्षाओं के लिए * आवश्यकता * नहीं है (जैसा कि ईएस 6 में लागू किया गया है)। मैं नहीं मानता कि यह "बस और अधिक लोगों को आकर्षित जे एस का उपयोग करने का एक साधन के रूप में" शुरू की है - हर किसी को यह पहले से ही उपयोग करता है। –

+1

बस जकास द्वारा लेख पढ़ें, जहां वह बताता है कि यह सिर्फ वाक्य रचनात्मक चीनी है।स्पष्टीकरण के लिए धन्यवाद, और सुनिश्चित करें कि हर कोई पहले से ही जेएस का उपयोग करता है, जो मेरा मतलब था, जेओ को संक्रमण ओओपी भाषाओं के लोगों के लिए अधिक आरामदायक बना रहा, अब मुझे एहसास हुआ कि यह सिर्फ एक लोकप्रिय शब्द (वर्ग) का उपयोग है, और अंत में यह दृश्यों के पीछे सिर्फ प्रोटोटाइप है। – Aravind

2

ES6 में कक्षाएं क्यों पेश की जा रही हैं? वाक्य रचनात्मक विविधता के चीनी।

4

मुझे ज़ाकास ने स्पष्ट रूप से समझाते हुए this article पाया, यह सिंटैक्टिक चीनी है, और दिन के अंत में जावास्क्रिप्ट उसी तरह काम करेगा।

कक्षाओं में जानने के लिए हो रही है या आपके प्रोग्रामिंग शैलियों, कुछ भी नहीं परिवर्तन शिफ्ट करने के लिए होने के बारे में चिंता मत करो। :)

5

लोग जावास्क्रिप्ट को अन्य लोगों की तुलना करके क्यों सीख रहे हैं, और का इरादा नहीं था?

यह cognitive and learning theory में हो जाता है, लेकिन लघु संस्करण है कि चीजें हैं जो परिचित हैं, और तरीके हम सीखते हैं में से एक की तरह मनुष्य ज्ञान हम पहले से ही है करने के लिए नए विचारों को संबंधित कर रहा है है।

ईसीएमएस्क्रिप्ट 6 में कक्षाएं क्यों पेश की जा रही हैं?

कक्षाएं almost introduced in ECMAScript 4 थीं, वास्तव में। मुझे लगता है कि ओओपी जटिल सॉफ्टवेयर लिखने के लिए उपयोगी पैटर्न होने के लिए अच्छे तर्क हैं, और वर्ग आधारित विरासत प्रोटोटाइप आधारित विरासत की तुलना में कई प्रोग्रामर से अधिक परिचित है। मुझे लगता है कि एक समान रूप से वैध प्रश्न हो सकता है "जावास्क्रिप्ट अभी भी प्रोटोटाइप आधारित विरासत को क्यों लागू करता है जब अधिकांश लोग इसे सीखते हैं, कक्षा आधारित विरासत के साथ अधिक आरामदायक होंगे?"

आप उत्सुक जावास्क्रिप्ट में क्या वर्गों की तरह लग सकता है, वर्ग आधारित विरासत के साथ which is based on that draft of EMCAScript 4ActionScript 3 पर एक नज़र डालें, कर रहे हैं।

बेशक

, सिर्फ इसलिए कि ECMAScript वर्ग समर्थन does not mean that JavaScript will कहते हैं, या कम से कम कि it will any time soon

1

क्लासेस लोग हैं, जो वस्तु उन्मुख भाषाओं (जावा) की तरह से जावास्क्रिप्ट के लिए आते हैं के लिए बहुत अच्छे हैं।

यह अनुभव मैं पहले से ही कई बार बनाया है है। मैं के साथ J2EE वेब परियोजनाओं के एक नंबर था अच्छा जावा देव टीम, जिनके पास कुछ जावास्क्रिप्ट ज्ञान था, लेकिन अधिक नहीं। लगभग पहली चीज मैंने प्रोटोटाइप, प्रोटोटाइप विरासत और प्रोटोटाइप का उपयोग करके ओओपी प्रतिमान को कैसे कार्यान्वित कर सकता है - मूल रूप से छद्मकोशिका विरासत को समझाने के लिए किया था। कि दृष्टिकोण के साथ मैं ज्यादातर अच्छा कोड बाहर आ देखा (अब मैं नियमित तौर पर एक "जावास्क्रिप्ट जावा डेवलपर्स के लिए" कार्यशाला लगभग उस तरह के हर परियोजना में करते हैं।)

। अधिकांश जावा डेवलपर्स छद्मकोशिका पैटर्न से चिपके रहते हैं और इससे काफी खुश हैं। यह सबसे अधिक नहीं है जो जेएस निंजा वहां लिखेंगे, लेकिन, स्पष्ट रूप से, मुझे परवाह नहीं है। कोड को समझना और बनाए रखना आसान है, लोगों के पास एक अच्छी सीखने की वक्र थी और उत्पादक बहुत तेजी से थे।

0

जावास्क्रिप्ट की तरह प्रोटोटाइप भाषाएं छोटे पैमाने पर, वास्तव में बहुत कम परीक्षण या रखरखाव की आवश्यकता नहीं होती है, अल्पकालिक परियोजनाओं के लिए वास्तव में बहुत अच्छी हैं। उनकी सरल और लचीली कार्यक्षमता वास्तव में इस क्षेत्र में चमकता है।

दूसरी तरफ कक्षा आधारित भाषाएं थोड़ी अधिक कठोर होती हैं और अधिक सेटअप की आवश्यकता होती है, जो छोटी चीजों पर उतनी ही अच्छी नहीं होती है, लेकिन अतिरिक्त संरचना बड़े, दीर्घकालिक परियोजनाओं को स्केलेबल और प्रबंधनीय रखने में सहायक होती है ।

जब जावास्क्रिप्ट पहली बार शुरू किया, प्राथमिक कार्य स्थिर डोम तत्व है, जो एक प्रोटोटाइप भाषा के लिए एक महान अनुप्रयोग है हेरफेर करने के लिए किया गया था। तेज़, लचीला और सरल - कोई झगड़ा नहीं। अब, हालांकि, जावास्क्रिप्ट भरने वाली भूमिका अधिक जटिल है और एक साधारण स्क्रिप्ट की तुलना में अधिक से अधिक एप्लिकेशन है। एक प्रोटोटाइप भाषा के वर्गों को जोड़ने से एक छोटे से अजीब लगती है, लेकिन जोड़ा संरचना कक्षाएं, प्रदान करते हैं उनके बड़े पैमाने पर अपनेपन के साथ बहुत आसानी से मदद कर सकता है डेवलपर्स की टीमों आधुनिक JavaScript एप्लिकेशन की जटिलता को संभाल।

संबंधित मुद्दे