Mina Gabriel
Mina Gabriel

Reputation: 25070

Add new element to an existing object

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

Answers (6)

mitchelangelo
mitchelangelo

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

paraS elixiR
paraS elixiR

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

Danilo Valente
Danilo Valente

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

jamesmillerio
jamesmillerio

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

sachleen
sachleen

Reputation: 31131

Just do myFunction.foo = "bar" and it will add it. myFunction is the name of the object in this case.

Upvotes: 15

John Koerner
John Koerner

Reputation: 38079

You can use Extend to add new objects to an existing one.

Upvotes: 4

Related Questions