2012-06-15 11 views
34

मैं क्या धक्का सरणियों के साथ करता है जैसे किसी मौजूदा ऑब्जेक्ट एक करने के लिए नए तत्वों को जोड़ने के लिए एक रास्ता तलाश कर रहे थेकिसी मौजूदा ऑब्जेक्ट के लिए नए तत्व जोड़ें

मैं इस की कोशिश की है और यह काम नहीं किया:

var myFunction = { 
    Author: 'my name ', 
    date: '15-12-2012', 
    doSomething: function(){ 
     alert("helloworld") 
    } 
}; 
myFunction.push({ 
    bookName:'mybook', 
    bookdesc: 'new' 
}); 
console.log(myFunction); 
+3

'myFunction' एक वस्तु है। ऑब्जेक्ट्स में 'पुश' विधि नहीं है। (न तो कार्य करता है) –

उत्तर

52

इस का उपयोग करें:

myFunction.bookName = 'mybook'; 
myFunction.bookdesc = 'new'; 

या, आप jQuery उपयोग कर रहे हैं:

$(myFunction).extend({ 
    bookName:'mybook', 
    bookdesc: 'new' 
}); 

push विधि गलत है, क्योंकि यह Array.prototype वस्तु के अंतर्गत आता है।

एक नामित वस्तु बनाने के लिए, इस प्रयास करें:

var myObj = function(){ 
    this.property = 'foo'; 
    this.bar = function(){ 
    } 
} 
myObj.prototype.objProp = true; 
var newObj = new myObj(); 
+0

धन्यवाद जो अच्छा लगता है, लेकिन मेरा अन्य प्रश्न यह है कि हम ऑब्जेक्ट –

+0

पर नाम कैसे दे सकते हैं? क्या आप बेहतर समझा सकते हैं? –

+0

जब आप एक console.log (yourObject) करते हैं तो यह नामित ऑब्जेक्ट के रूप में आता है कि हम उस प्रदर्शन नाम को कैसे बदल सकते हैं? –

2

आप मौजूदा ऑब्जेक्ट में नई ऑब्जेक्ट्स जोड़ने के लिए Extend का उपयोग कर सकते हैं।

11

बस myFunction.foo = "bar" करें और यह इसे जोड़ देगा। myFunction इस मामले में वस्तु का नाम है।

3

आप देख रहे हैं jQuery extend method के लिए। यह आपको अपने पहले से बनाए गए जेएस ऑब्जेक्ट में अन्य सदस्यों को जोड़ने की अनुमति देगा।

+0

अद्यतन किया यह लॉनाश में भी उपलब्ध है: https://lodash.com/docs#isEmpty: _.isEmpty ({'a': 1}); // → झूठी –

4

दानिलो वैलेंटे द्वारा ऊपर वर्णित jQuery वाक्यविन्यास काम नहीं कर रहा है। यह निम्नलिखित के रूप में होना चाहिए-

$.extend(myFunction,{ 
    bookName:'mybook', 
    bookdesc: 'new' 
}); 
संबंधित मुद्दे