2009-12-09 5 views
7

जावास्क्रिप्ट कार्यों इस तरह एक वस्तुओं प्रोटोटाइप पर घोषित किया जा सकता:प्रोटोटाइप जावास्क्रिप्ट में सामान्य कार्यों से अलग कैसे कार्य करता है?

<object name>.prototype.<variable name>=function(){ 
// 
// 
} 

कैसे यह इस घोषणा के बाद से अलग?

<object name>.<variable name>=function(){ 
// 
// 
} 

प्रोटोटाइप जावास्क्रिप्ट में सामान्य कार्यों से अलग कैसे कार्य करता है?

+1

कृपया फिर से वाक्यांश के बहुत सारे हैं। – gahooa

+3

@ गहुआ: आपको क्यों लगता है कि इस प्रश्न का उत्तर नहीं दिया जा सकता है। यह बहुत उच्च स्तर हो सकता है, लेकिन यह अभी भी एक सवाल है। आप इसे और अधिक स्पष्ट करने के लिए हमेशा इसे संपादित कर सकते हैं। व्याकरण संबंधी गलतियों के कारण इसे वोट करने की कोई आवश्यकता नहीं है ... – Josh

+0

http://stackoverflow.com/questions/186244/what-does-it-mean-that-javascript-is-a-prototype-based-भाषा –

उत्तर

7

मूल ऑब्जेक्ट के प्रोटोटाइप पर घोषित फ़ंक्शंस उस ऑब्जेक्ट प्रकार के सभी उदाहरणों से विरासत में प्राप्त होते हैं।

उदाहरण के लिए ..

String.prototype.foo = function() { 
    return 'bar'; 
}; 

अब, हर स्ट्रिंग समारोह foo होगा() उपलब्ध। जबकि सामान्य कार्यों "स्थिर" कार्य हैं

'test'.foo(); // returns 'bar'

प्रोटोटाइप आधारित विरासत here

+2

+1 इसके अलावा, यह स्पष्ट रूप से कार्य करने के लायक है * और गुण * किसी ऑब्जेक्ट के प्रोटोटाइप पर घोषित किए गए गुण उस ऑब्जेक्ट के सभी उदाहरणों से विरासत में प्राप्त होते हैं, * यहां तक ​​कि उन लोगों को भी जिन्हें तुरंत पहले ही चालू कर दिया गया है। * –

+0

हां, अच्छा बिंदु। वह अंतिम हिस्सा बहुत महत्वपूर्ण है। प्रोटोटाइप कुछ हद तक कार्य करता है क्योंकि किसी सदस्य को अंतिम अपरिवर्तित माना जाता है, इसलिए प्रोटोटाइप को संशोधित करना मौजूदा वस्तुओं को भी प्रभावित करता है। – Matt

16

प्रोटोटाइप कार्यों के बारे में और अधिक पढ़ें, उदाहरण के कार्य हैं। कक्षा के प्रोटोटाइप पर घोषित कार्य उस वर्ग के सभी उदाहरणों पर उपलब्ध होंगे।

var MyClass = function(){ 
}; 
MyClass.staticFunction = function(){alert("static");}; 
MyClass.prototype.protoFunction = function(){alert("instance");}; 

MyClass.staticFunction(); //OK 
MyClass.protoFunction(); //not OK 

var myInstance = new MyClass(); 
myInstance.staticFunction(); //not OK 
myInstance.protoFunction(); //OK 
+2

+1 यह मैंने देखा है कि सबसे संक्षिप्त व्याख्या है। –

0

मैट और इगोर पहले से ही पर्याप्त कोड नमूने प्रदान की है, लेकिन सबसे अच्छा लेख (छोटा है, सही और बात करने के लिए) है कि आप पढ़ सकते हैं में से एक Prototypal Inheritance, डगलस Crockford कर रहा है।

वहाँ भी है कि जवाब दिया जा सकता लोकप्रिय पुस्तकालयों के माध्यम से विरासत की सुविधा के लिए अलग अलग तरीकों (Dojo, Prototype, आदि) एक असली सवाल में

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