【问题标题】:Add new element to an existing object向现有对象添加新元素
【发布时间】:2012-06-18 22:39:58
【问题描述】:

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

这个我试过了,还是不行:

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

【问题讨论】:

  • myFunction 是一个对象。对象没有push 方法。 (两者都没有功能)
  • 我知道这是旧的,但命名变量 myFunction 似乎至少有点混乱。

标签: javascript jquery object


【解决方案1】:

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

看看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"}]

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

【讨论】:

    【解决方案2】:

    Danilo Valente 上面提到的 jQuery 语法不起作用。应该是这样的——

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

    【讨论】:

      【解决方案3】:

      使用这个:

      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();
      

      【讨论】:

      • 谢谢,这听起来不错,但我的另一个问题是我们如何为对象命名
      • 什么名字?你能解释得更好吗?
      • 当您执行 console.log(yourObject) 时,它会以命名对象的形式出现,我们如何更改该显示名称?
      • myFunction.bookdesc = 'new'; 帮了我谢谢
      【解决方案4】:

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

      【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-28
          • 1970-01-01
          • 1970-01-01
          • 2013-09-23
          • 1970-01-01
          • 1970-01-01
          • 2015-01-24
          • 2020-09-16
          • 2011-08-11
          相关资源
          最近更新 更多