Reputation: 25070
I was looking for a way to add new elements to an an existing object like what push does with arrays
I have tried this and it didn't work :
var myFunction = {
Author: 'my name ',
date: '15-12-2012',
doSomething: function(){
alert("helloworld")
}
};
myFunction.push({
bookName:'mybook',
bookdesc: 'new'
});
console.log(myFunction);
Upvotes: 46
Views: 217501
Reputation: 899
You could store your JSON inside of an array and then insert the JSON data into the array with push
Check this out https://jsfiddle.net/cx2rk40e/2/
$(document).ready(function(){
// using jQuery just to load function but will work without library.
$( "button" ).on( "click", go );
// Array of JSON we will append too.
var jsonTest = [{
"colour": "blue",
"link": "http1"
}]
// Appends JSON to array with push. Then displays the data in alert.
function go() {
jsonTest.push({"colour":"red", "link":"http2"});
alert(JSON.stringify(jsonTest));
}
});
Result of JSON.stringify(jsonTest)
[{"colour":"blue","link":"http1"},{"colour":"red","link":"http2"}]
This answer maybe useful to users who wish to emulate a similar result.
Upvotes: 3
Reputation: 2704
jQuery syntax mentioned above by Danilo Valente is not working. It should be as following-
$.extend(myFunction,{
bookName:'mybook',
bookdesc: 'new'
});
Upvotes: 7
Reputation: 11342
Use this:
myFunction.bookName = 'mybook';
myFunction.bookdesc = 'new';
Or, if you are using jQuery:
$(myFunction).extend({
bookName:'mybook',
bookdesc: 'new'
});
The push
method is wrong because it belongs to the Array.prototype
object.
To create a named object, try this:
var myObj = function(){
this.property = 'foo';
this.bar = function(){
}
}
myObj.prototype.objProp = true;
var newObj = new myObj();
Upvotes: 72
Reputation: 3204
You are looking for the jQuery extend method. This will allow you to add other members to your already created JS object.
Upvotes: 3
Reputation: 31131
Just do myFunction.foo = "bar"
and it will add it. myFunction
is the name of the object in this case.
Upvotes: 15