corckford के बयान को साबित करने देता है:
"एक विधि विधि के साथ Function.prototype बढ़ाने के द्वारा, हम कोई longerhave प्रोटोटाइप गुण का नाम कर सकते हैं अब टाइप करने के लिए कुरूपता का यह बिट। छुपाओ। "
यहाँ Crockford आप में हेरफेर कर सकते हैं Function.prototype अपने व्यक्तिगत usage.It लिए कई अलग अलग कार्यक्षमता प्राप्त करने के लिए किसी भी कार्य करने के लिए नया तरीका/संपत्ति जोड़ने के लिए function.prototype को जोड़ा गया कार्यक्षमता है कहना चाहता जावास्क्रिप्ट में कार्यक्षमता फॉर्मेट होती है Function.prototype.lets आपके कोड को तोड़ देती है।
Function.prototype.method = समारोह (नाम, समारोह) {
इस लाइन Function.prototype एक नया method.This विधि जोड़ा जाता है में
दो तर्क प्राप्त करते हैं। name
एक नए तरीके के नाम के लिए सैंड्स .और func
इसकी कार्यक्षमता के लिए खड़ा है। मुझे लगता है कि आप विधियों और गुणों के बारे में परिचित हैं। कार्य जावास्क्रिप्ट में प्रथम श्रेणी वस्तु है। इसलिए उन्हें रनटाइम के दौरान नई गुण और विधियां जोड़ दी जा सकती हैं।
यह.प्रोटोटाइप [नाम] = func;
यहाँ इस समारोह है जो यह कहता है को दर्शाता है। [name]
विधि का नाम है और func
विधि की कार्यक्षमता यह तब array notation. का उपयोग कर अंत में
इस वापसी पारित कर समारोह करने के लिए एक नई विधि कहते है;
इस बयान
पारित कर समारोह साथ
एक नई पद्धति से जोड़ रहे है के साथ वापस आ गया है।
यहाँ मैं आप के लिए एक व्यावहारिक उदाहरण है:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
function Myfunction(){ // a constructor function called Myfunction
this.name='robin'; // it has a name property
}
Myfunction.method('mymethod',function(){ console.log(' i am available')}); //adds a method named 'mymethod to Myfunction constructor
var newObj=new Myfunction(); // creates a new instance of Myfunction class
console.log(newObj.mymethod()); //calls mymethod() of newObj
यहाँ myfunction
एक constructor.We इस निर्माता के प्रोटोटाइप को विरासत में मिला तरीके जोड़ usind Myfunction.prototype.mymethod=function(){ ..}
आप myfunction के रूप में उपयोग कर सकते हैं है कन्स्ट्रक्टर यह तरीका है कि आप इसे विधि जोड़ते हैं। लेकिन जैसा कि आपने एक नई कार्यक्षमता जोड़ा है फ़ंक्शन।प्रोटोटाइप, तो आप बस इसे पसंद
Myfunction.method('mymethod',function(){console.log('i am available'}); //it will add a method named mymethod to Myfunction's prototype
यह बयान फोन Myfunction()'s prototype
परोक्ष करने के लिए एक नई विधि mymethod
जोड़ देगी सकते हैं।
ताकि आप आप Myfunction.method('mymethod',function(){ console.log('i am available'});
लिख सकते हैं Myfunction.prototype.mymethod=function(){ console.log('i am available');
.Instead लिखने की आवश्यकता नहीं है तो यह साबित होता है यह Myfunction.prototype
बार-बार हर बार जब आप करने के लिए नए तरीकों को जोड़ना चाहते हैं लिखने से आप राहत मिल जाएगी माईफंक्शन कन्स्ट्रक्टर।
तो यह क्रॉकफोर्ड का बयान साबित करता है।
आपके पास जो कुछ नहीं है उसके प्रोटोटाइप को छूना एक भयानक विचार है (आप सभी प्रकार के संघर्षों का द्वार खोलते हैं)। यह क्रॉकफोर्ड के हिस्से पर आलसी आलसी आलसी है। – ssube
"सुधार" किया जा रहा है वास्तव में बहुत व्यावहारिक महत्व नहीं है; मुझे लगता है कि यह एक शिक्षण उदाहरण है। – Pointy
@ssube: क्रॉकफोर्ड "बीमार सलाह"? हुंह। यदि यह एक समस्या है, तो हमें हमें बताने के बजाए दिखाएं ... – dandavis