वस्तुओं का लाभ लेने का सबसे अच्छा तरीका जावास्क्रिप्ट में प्रोटोटाइप पैटर्न का उपयोग करना है। इसका मतलब है कि शेयर ऑब्जेक्ट्स के साथ डेटा, कट्टर होने और कहने के बजाय "यह मेरा है!" साझा करें।
यह पैटर्न जावास्क्रिप्ट पुस्तकालयों में पूरी जगह पर है। यह इस तरह दिखता है:
var Template = {
extend: function() {
var F = function() {};
F.prototype = this.prototype;
var instance = new F();
instance.mixin.apply(instance, arguments);
return instance;
},
mixin: function (mixins) {
for (var i = 0, len = arguments.length; i < len; i++) {
for (var k in arguments[i]) if (arguments[i].hasOwnProperty(k)) {
this[k] = arguments[i][k];
}
}
return this;
}
};
इस जादुई वर्ग विरासत जंजीरों में डेटा साझा कर देगा और आपके ऑब्जेक्ट मॉडल सरल बनाते हैं। कुछ भी कक्षा नहीं है- सब कुछ एक वस्तु है! इसका अर्थ जावास्क्रिप्ट के minutiae को समझना है, क्योंकि चिपचिपा गुओ में खुद को फंसने के लिए नहीं, लेकिन यह इसके लायक है।
इसका मतलब यह है कि आपके पास:
var Koopa = Template.extend({
hasShell: true,
fatalFlaw: 'shell'
});
var Bowser = Koopa.extend({
fatalFlaw: 'tail'
});
डाटा संग्रहित दिखता है इस प्रकार है:
+-------------------. +---------------------. +---------.
| Bowser |->| Koopa |->| Template |
+--------------------+ +----------------------+ +----------+
|fatalFlaw => 'tail' | | hasShell => true | | mixin |
`-------------------+ | fatalFlaw => 'shell' | | extend |
`---------------------+ `---------+
इस डिजाइन पिता Crockford के prototypal inheritance डिजाइन की वजह से उपजी। और Knuth की तरह कहते हैं: "समयपूर्व अनुकूलन सभी बुराई की जड़ है!"
और ... यदि यह एक ऑफ विषय उत्तर जैसा लगता है- इसका इरादा है। आपको सवाल पूछना चाहिए कि आपकी डिज़ाइन आपकी आवश्यकताओं को कैसे पूरा कर सकती है। यदि आप इसे अच्छी तरह से करते हैं, तो सब कुछ जगह में गिरना चाहिए। यदि आप इसे पर्याप्त रूप से नहीं सोचते हैं, तो आप कुछ दुष्प्रभावों और बदबूदार कोड के साथ समाप्त कर सकते हैं। अपने आप को एक पक्ष बनाओ और एक ऐसे डिज़ाइन के साथ आओ जो आपके पास किसी भी प्रकार की हिचकिचाहट को समाप्त कर दे। शतरंज हल करने से ब्राउज़र इन दिनों अधिक जटिल और सीपीयू गहन चीजें करते हैं!
तो, मेरा जवाब है ... लोगों को दक्षता के बारे में क्या कहना है, या सबसे अच्छा क्या है (यहां तक कि मुझे!)। अपनी लाइब्रेरी के डिजाइन में, जो आपको सबसे ज्यादा समझ में आता है। अभी, आप एक गोल छेद में एक चौकोर छेद में फेंकने की कोशिश कर रहे हैं। आपको पहले यह तय करना होगा कि आपकी ज़रूरतें क्या हैं, और सब कुछ स्वाभाविक रूप से बाद में आ जाएगा। यह आपको भी आश्चर्यचकित कर सकता है!
+10 अगर मैं कर सकता, तो यह अब तक का सबसे अच्छा जवाब है। Knuth उद्धृत करने के लिए एक और +1। –
वास्तव में बहुत बुद्धिमान :) बहुत सराहना की प्रतिक्रिया – Purefan
@ मार्सेल: दयालु शब्दों के लिए धन्यवाद। मैं खुद को समय-समय पर उद्धरण बताता हूं, यह वह है जो सिर्फ दे रहा है। – SamStephens