के बजाय Object.create() का उपयोग करके निजी सदस्यों के साथ ऑब्जेक्ट कैसे बनाएं, संपादित करें: मैंने इसे अंत में बर्गी के उत्तर से बाहर निकाला।नए
धन्यवाद बर्गी।
pubPrivExample = (function() {
return {
init : function() {
var private;
this.setPrivate = function (p) {
private = p;
};
this.getPrivate = function() {
return private;
};
},
public : "This is public\n"
};
}());
var a;
a = Object.create(pubPrivExample);
a.init();
a.setPrivate("This is private");
document.write(a.getPrivate());
संपादित करें: ऐसा लगता है कि मेरे प्रश्न का उत्तर एक स्पर्शरेखा पर बंद है। मुझे वास्तव में एक कारखाने में दिलचस्पी नहीं है और वास्तव में इसका उपयोग नहीं किया जाएगा। मेरा सवाल निजी राज्य के बारे में है। बर्गी के उत्तरों और टिप्पणियों से मुझे लगता है कि मैं कुछ एक साथ खींच सकता हूं।
जारी रखा जाना करने के लिए ...
संपादित करें: Bergi नीचे सवाल का जवाब देने शुरू कर दिया है, लेकिन सबसे महत्वपूर्ण हिस्सा बाहर छोड़ दिया - निजी राज्य।
मेरे पास इस विचार के बारे में अधिक सोचने का समय है, लेकिन अभी भी किसी भी प्रकार के कारखाने के बिना Object.create() का उपयोग करके निजी राज्य प्राप्त करने में असमर्थ हूं। लेकिन मैं गलत होना चाहता हूं, और बर्गि ने समाधान के लिए संकेत दिया ... बर्गी के जवाब को शुरुआती बिंदु के रूप में लेने के लिए स्वतंत्र महसूस करें।
मूल: जावास्क्रिप्ट में new
से बचने के लिए मेरी खोज ने मुझे एक असाधारण स्थान पर ले जाया है। मैं निजी ऑब्जेक्ट सदस्यों को चाहता हूं, लेकिन मैं छोड़ना नहीं चाहता हूं।
यहां कोड है।
var trackQueue = {};
trackQueue.factory = function() {
var that, queue;
that = this;
queue = [];
that.push = function (item) {
queue.push(item);
};
that.work = function() {
document.write(queue + "<br />");
};
return {
work : that.work,
push : that.push
};
};
var a = Object.create(trackQueue.factory());
a.push("a");
a.push("b");
a.push("c");
var b = Object.create(trackQueue.factory());
b.push("d");
b.push("e");
b.push("f");
a.work();
b.work();
और एक jsfiddle
http://jsfiddle.net/dsjbirch/Wj6cp/10/
चाहेंगे init
एक और अधिक मुहावरेदार/उचित factory
विधि के लिए नाम हो सकता है?
क्या यह पागल है?
दयालु रहें - जावास्क्रिप्ट मेरी पहली भाषा नहीं है।
आप 'new' का उपयोग क्यों नहीं करना चाहते हैं? –
डगलस क्रॉकफ़ोर्ड। – bluekeys
यह दुर्भाग्यपूर्ण है। –