43

我正在寻找一种将新元素添加到现有对象的方法,就像 push 对数组所做的那样

我已经尝试过了,但它没有用:

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

6 回答 6

70

用这个:

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();
于 2012-06-15T20:36:10.930 回答
13

只需这样做myFunction.foo = "bar",它就会添加它。myFunction在这种情况下是对象的名称。

于 2012-06-15T20:36:01.717 回答
6

Danilo Valente 上面提到的 jQuery 语法不起作用。应该如下——

$.extend(myFunction,{
    bookName:'mybook',
    bookdesc: 'new'
});
于 2016-03-11T19:40:26.120 回答
3

您可以使用Extend将新对象添加到现有对象。

于 2012-06-15T20:35:53.163 回答
3

您正在寻找jQuery 扩展方法。这将允许您将其他成员添加到您已经创建的 JS 对象中。

于 2012-06-15T20:37:38.357 回答
1

您可以将 JSON 存储在数组中,然后将 JSON 数据插入到数组中push

看看这个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));    
    }

}); 

的结果JSON.stringify(jsonTest)

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

这个答案可能对希望模拟类似结果的用户有用。

于 2019-01-31T22:54:49.003 回答