2012-06-10 14 views
8

संभव डुप्लिकेट:
How to “properly” create a custom object in JavaScript?जावास्क्रिप्ट में कस्टम ऑब्जेक्ट्स कैसे बनाएं?

क्षमा करता है, तो इस से पहले उत्तर दिया गया है, लेकिन मैं थोड़ा जावास्क्रिप्ट में कस्टम वस्तुओं बनाने के संबंध में बनने की पेशकश की विकल्पों की राशि से अभिभूत हूँ । मुझे उनकी संबंधित ताकत या कमजोरियों के बारे में निश्चित नहीं है या वे बिल्कुल भिन्न हैं या नहीं।

1:: नई वस्तु

person = new Object() 
person.name = "Tim Scarfe" 
person.height = "6Ft" 

person.run = function() { 
    this.state = "running" 
    this.speed = "4ms^-1" 
} 

2:

यहाँ अलग अलग तरीकों से मैं वस्तुओं के निर्माण के लिए मिल गया है में से कुछ हैं शाब्दिक संकेतन

timObject = { 
    property1 : "Hello", 
    property2 : "MmmMMm", 
    property3 : ["mmm", 2, 3, 6, "kkk"], 
    method1 : function(){alert("Method had been called" + this.property1)} 
}; 

3 : कार्य

function AdBox() { 
    this.width = 200; 
    this.height = 60; 
    this.text = 'default ad text'; 
    this.prototype.move = function() { 
     // code for move method goes here 
    } 
} 
this.prototype.display = function() { 
    // code 
} 

मैंने कुछ और तरीकों को भी देखा लेकिन वे कम आम लगते थे .. जैसा कि आप देख सकते हैं कि मुझे बिल्कुल यकीन नहीं है कि मानक क्या है जब कोई सिर्फ फ़ील्ड और विधियों के साथ एक साधारण वस्तु चाहता है।

पढ़ने के लिए धन्यवाद।

+1

आपके 'एडबॉक्स' फ़ंक्शन में, यह 'this.move = function' होना चाहिए 'this.prototype.move = function'। – zzzzBov

+0

@zzzzBov: हाँ मैंने अभी कॉपी किया और चिपकाया [यहां] (http://javascript.about.com/library/bltut35.htm)। उन्होंने कहा कि यह किसी भी तरह से किया जा सकता है लेकिन मतभेद हैं। –

+2

http://stackoverflow.com/questions/1595611/how-to-properly-create-a-custom-object-in-javascript#1598077 – zerkms

उत्तर

1

पहला और दूसरा विकल्प कार्यात्मक रूप से समान हैं। अधिकांश डेवलपर शाब्दिक नोटेशन का उपयोग करना चुनते हैं क्योंकि यह थोड़ा छोटा है।

तीसरा विकल्प आमतौर पर तब उपयोग किया जाता है जब आप पुन: प्रयोज्य वस्तुओं (यानी विरासत) बनाना चाहते हैं। इस मामले में, फ़ंक्शन "कन्स्ट्रक्टर" के रूप में कार्य करता है - जो एक ऐसा फ़ंक्शन है जो एक नया ऑब्जेक्ट उदाहरण देता है जो कि कन्स्ट्रक्टर के प्रोटोटाइप में परिभाषित विधियों और गुणों का उत्तराधिकारी हो सकता है।

+0

कौन सा हिस्सा कहता है कि यह "अच्छा अभ्यास" है 'नया' कीवर्ड का उपयोग न करें? मुझे उस सलाह से असहमत होना पड़ेगा। –

+0

शूट करें आप सही गलत लिंक हैं। मैं सही लिंक ढूंढने के बाद इसे अपडेट करूंगा (जिसका उपयोग * नई ऑब्जेक्ट() * * के लिए नहीं किया गया था)। क्षमा करें, मैंने गलत किया कि मेरी मूल (हटाई गई) टिप्पणी में)। –

संबंधित मुद्दे