मैं यह देखने की कोशिश कर रहा हूं कि मैं अपनी जावास्क्रिप्ट ऑब्जेक्ट्स को यथासंभव सहजता से बना सकता हूं, जबकि यह सुनिश्चित कर रहा हूं कि यह यथासंभव 'सही' है। मैं क्रॉकफोर्ड के JSLint.com के माध्यम से विभिन्न परिदृश्यों का एक गुच्छा चला रहा हूं और इसमें बहुत भाग्य नहीं है। मुझे एक त्रुटि ठीक लगती है, फिर परिवर्तन के कारण कोई और पॉप अप हो जाता है। नीचे जितना अच्छा हो उतना अच्छा है। किसी के पास इस पर कोई और लेना है?जावास्क्रिप्ट ऑब्जेक्ट बनाने का सबसे अच्छा तरीका क्या है जिससे यह काम करता है और जेएसलिंट पास करता है?
function gizmo(id) {
/* private variables */
var myId = id;
/* private methods */
var init = function() {
if (myId < 1) {
setId(1);
}
};
var setId = function (newId) {
myId = newId;
};
// run 'constructor'
init();
/* public methods */
return {
getId: function() {
return myId;
},
setId: function (newId) {
setId(newId);
},
incrementId: function (inc) {
setId(myId + inc);
}
};
}
// creating an instance of gizmo
var myGizmo = gizmo(-2);
console.log(myGizmo.getId()); // outputs 1
myGizmo.setId(5);
console.log(myGizmo.getId()); // outputs 5
myGizmo.incrementId(2);
console.log(myGizmo.getId()); /// outputs 7
यह अच्छी तरह से काम करने लगता है:
यह एक विशिष्ट तरीका मैं एक वस्तु की संरचना है। हालांकि, जब मैं जेएसलिंट के माध्यम से इसे चलाता हूं, तो यह मुझे एक त्रुटि देता है जिसमें कहा गया है कि मेरे दो निजी कार्य 'लागू ग्लोबल्स' हैं।
सबसे अच्छा मैं के साथ इस तरह चर के साथ शीर्ष पर मेरे कार्यों की घोषणा करने के लिए है ऊपर आ सकते हैं:
function gizmo(id) {
/* private variables */
var myId = id,
init,
setId;
/* private methods */
init = function() {
if (myId < 1) {
setId(1);
}
};
setId = function (newId) {
myId = newId;
};
// run 'constructor'
init();
/* public methods */
return {
getId: function() {
return myId;
},
setId: function (newId) {
setId(newId);
},
incrementId: function (inc) {
setId(myId + inc);
}
};
}
यह सलाह के रूप में इतना जवाब नहीं है। जेएसलिंट के बारे में ज्यादा चिंता मत करो। मुझे अक्सर यह बहुत सख्त लगता है। इसके बजाय प्रोग्रामिंग पर ध्यान केंद्रित करें। उस ने कहा, मैं दूसरों को सर्वोत्तम अभ्यास पर चर्चा करने दूँगा। – TNi
सहमत हुए। मैं इसे बहुत ज्यादा तनाव नहीं दे रहा हूं। मेरे पास इंटरवब्स पर और वहां जो कुछ मैंने सीखा है उसके आधार पर मेरे कोड को संरचित करने का मेरा तरीका है। मैं पिछले कुछ दिनों में जेएसलिंट के साथ खेल रहा हूं और अन्य लोगों को इस पर लेने में दिलचस्पी थी। –
समस्या init और आपके कार्यों का क्रम है। ऑब्जेक्ट को वापस करने से पहले इनिट को सही तरीके से ले जाएं। इसके अलावा मुझे नहीं लगता कि आपको फ़ंक्शन init की आवश्यकता है। हो सकता है कि चीजों को अलग करने के लिए एक स्व-निष्पादन और अज्ञात एफएन के रूप में। – galambalazs