मैं एक वेक्टर वर्ग बना रहा हूं, जो मूल रूप से तीन संख्यात्मक मान रख सकता है। हालांकि, इस तरह के वेक्टर पर बहुत से ऑपरेशन किए जा सकते हैं - उदा। परिमाण प्राप्त करना, जोड़ना या किसी अन्य वेक्टर इत्यादि को घटा देनाक्या मुझे प्रोटोटाइप का उपयोग करना चाहिए या नहीं?
मैं सोच रहा था कि क्या इन कार्यों को वेक्टर वर्ग के प्रोटोटाइप फ़ंक्शन के रूप में कोड किया जाना चाहिए, या मुझे उन्हें निर्माता में परिभाषित करना चाहिए।
तो इनमें से कौन सा तरीका बेहतर है?
function Vector3D(x, y, z) {
this.x = x;
this.y = y
this.z = z;
}
Vector3D.prototype.magnitude = function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
या
function Vector3D(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
this.magnitude = function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
}
आपकी प्रतिक्रिया के लिए धन्यवाद। एक्स, वाई और जेड को वेक्टर 3 डी के उदाहरण से निकाला जा सकता है, इसलिए उन्हें सार्वजनिक होना चाहिए। इस मामले में, प्रोटोटाइप सबसे अच्छा विकल्प होगा? सही जवाब के लिए – pimvdb
+1, लेकिन मैं प्रोटोटाइप पसंद करता हूं, क्योंकि जेएस में निजी कुछ भी एक पाइपड्रीम है, और आम तौर पर आपके कोड को यूनिट करने के लिए केवल कठिन बना देगा - आप खुद को छोड़कर सामान छुपा रहे हैं :) –
मैं सहमत हूं आपके साथ, इसलिए मेरे पास केवल सार्वजनिक चर हैं। Google क्रोम के डेवलपर टूल्स फ़ंक्शंस में सदस्यों के रूप में दिखाए जाते हैं यदि कन्स्ट्रक्टर के बावजूद पास किया जाता है, जबकि यह अधिक व्यावहारिक होगा यदि वे प्रोटोटाइप में 'छुपा' होंगे और केवल एक्स, वाई और जेड वहां दिखाई देंगे। – pimvdb