web-dev-qa-db-fra.com

Ajouter un nouvel élément à un objet existant

Je cherchais un moyen d'ajouter de nouveaux éléments à un objet existant, comme ce que Push fait avec des tableaux

J'ai essayé cela et cela n'a pas fonctionné: 

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

Utilisez ceci:

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

Ou, si vous utilisez jQuery:

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

La méthode Push est incorrecte car elle appartient à l'objet Array.prototype.

Pour créer un objet nommé, essayez ceci:

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

Il suffit de faire myFunction.foo = "bar" et il va l'ajouter. myFunction est le nom de l'objet dans ce cas.

13
sachleen

la syntaxe jQuery mentionnée ci-dessus par Danilo Valente ne fonctionne pas. Ce devrait être comme suit- 

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

Vous recherchez la méthode jQuery extend . Cela vous permettra d'ajouter d'autres membres à votre objet JS déjà créé.

3
jamesmillerio

Vous pouvez utiliser Etendre pour ajouter de nouveaux objets à un objet existant.

2
John Koerner

Vous pouvez stocker votre code JSON dans un tableau, puis insérer les données JSON dans le tableau avec 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));    
    }

}); 

Résultat de JSON.stringify(jsonTest)

[{"colour":"blue","link":"http1"},{"colour":"red","link":"http2"}]

Cette réponse peut être utile aux utilisateurs qui souhaitent imiter un résultat similaire.

0
Scott