इंट्रोडक्टरी पढ़ने:हैंडलिंग एपीआई डिजाइन और OO चीनी
मैं ऊपर वर्णित पैटर्न के बाद निम्नलिखित
var Proto = {
constructor: function() {
this.works = true;
},
method: function() {
return this.works;
}
};
अब के रूप में बनाने के पुस्तकालयों/एपीआई लाइब्रेरी उपयोगकर्ताओं के लिए मेरे प्रोटोटाइप के साथ बातचीत करने के लिए (जो sup नहीं है कारखाने कार्यों चलती हैं) वे दृष्टांत और वस्तु
// instantiate
var p = Object.create(Proto);
// initialize
p.constructor();
यह उपयोगकर्ताओं का दृष्टांत और मेरी वस्तुओं को प्रारंभ करने के लिए मजबूर के एक अमित्र और वर्बोज़ तरीका है आरंभ करने के लिए है।
व्यक्तिगत रूप से के बाद से मैं अपने सभी अनुप्रयोगों में pd
का उपयोग मैं निम्नलिखित चीनी
// instantiate or initialize
var p = Proto.new();
// or without bolting onto Object.prototype
var p = pd.new(Proto);
हालांकि मुझे लगता है कि उन पर पीडी मजबूर करने के लिए तो मुझे यकीन है कि क्या सबसे अच्छा तरीका है मेरे पुस्तकालयों उपयोगी बनाने के लिए है नहीं कर रहा हूँ निर्दयी है है ।
- लोग
Proto
के नए उदाहरण बना और.constructor
themself - फोर्स लोगों
pd
- उपयोग करने के लिए फोन
.create
शैली कारखाने कार्यों दें - ऊपर दो और का उपयोग
new <Function>
और.prototype
1 और 2 का पहले ही उल्लेख किया जा चुका है।
3 मूल रूप से
Proto.create = pd.new.bind(pd, Proto);
4 मुझे दुख की बात है, लेकिन काम करने के एक ज्ञात मानक तरीका करने के लिए इस बात की पुष्टि कर जाएगा प्रयोज्य बढ़ जाती है।
आम तौर पर गैर-मानक ओओ पैटर्न का उपयोग करते समय लोगों को उनके आवेदन में मेरी लाइब्रेरी का उपयोग करने की अनुमति देने के लिए सबसे आसान तंत्र क्या हैं?
मैं वर्तमान में कहने के लिए
// here is my Prototype
Proto;
// here is how you instantiate a new instance
var p = Object.create(Proto);
// here is how you initialize it
// yes instantiation and initialization are seperate and should be.
p.constructor();
// Want sugar, use pd.new
लेकिन फिर मूल रूप से बस # 4 है। मैं वस्तुओं को बना रहा हूं जो कार्य हैं। मैं वास्तव में ऐसा नहीं करना चाहता हूं। – Raynos
@ रेनॉस: सच है, लेकिन यह सब कुछ करता है। मैं पसंद करूंगा कि हर कोई कक्षाओं (पीएसी) के रूप में प्रोटोटाइप का उपयोग करेगा, लेकिन शायद यह कभी नहीं होगा। हालांकि, [वर्ग शाब्दिक] (http://wiki.ecmascript.org/doku.php?id=harmony:classes) इसे ईएस 6 में बना देगा और फिर सब कुछ _looks_ पीएसी की तरह होगा। मुझे यह स्वीकार्य लगता है, क्योंकि यह चीजों को संगत रखता है। हुड _is_ के तहत क्या स्पष्ट रूप से संरचित है। मैं बस इसे प्रबंधित नहीं करना चाहता। अगर ES6 मेरे लिए ऐसा करता है - तो ठीक है। –
मैंने चुना है ["यहां बताया गया है कि आप कैसे पीएसी को तत्काल और प्रारंभ करते हैं] (http://raynos.org/blog/7/Doing-Object-Oriented- जावास्क्रिप्ट--part-3)। अब जब आप जानते हैं, तो आप मेरे कोड का उपयोग कर सकते हैं, यह सब समझ में आता है। " – Raynos