2012-06-15 27 views
34

que estaba buscando una manera de añadir nuevos elementos a un un objeto existente, como lo hace con empuje matricesAñadir nuevo elemento a un objeto existente

He intentado esto y no funcionó:

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

'myFunction' es un objeto. Los objetos no tienen un método 'push'. (tampoco lo hacen las funciones) –

Respuesta

52

Utilice esta:

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

O, si usted está utilizando jQuery:

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

push El método es incorrecto, ya que pertenece al objeto Array.prototype.

Para crear un objeto con nombre, intente esto:

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

gracias que suena bien, pero mi otra pregunta sobre cómo podemos darle un nombre al objeto –

+0

¿Qué nombre? ¿Podrías explicar mejor? –

+0

cuando haces un console.log (yourObject) aparece como objeto con nombre ¿cómo podemos cambiar ese nombre para mostrar? –

2

Puede usar Extend para agregar objetos nuevos a uno existente.

11

Solo haz myFunction.foo = "bar" y lo agregará. myFunction es el nombre del objeto en este caso.

3

Usted está buscando el jQuery extend method. Esto le permitirá agregar otros miembros a su objeto JS ya creado.

+0

Esto también está disponible en lodash: https://lodash.com/docs#isEmpty: _.isEmpty ({'a': 1}); // → falso –

4

La sintaxis de jQuery mencionada anteriormente por Danilo Valente no está funcionando. Debería ser el siguiente-

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