如何向javascript/jQuery对象添加变量?

如何向javascript/jQuery对象添加变量?,javascript,Javascript,问题很简单。我得到了一个解析表行的对象。代码如下: var erg = []; $("tr").each(function (index) { var row = {}; var test = $(this).children(); row['column1'] = test[0].textContent; row['column2'] = test[1].textContent; row['column3

问题很简单。我得到了一个解析表行的对象。代码如下:

var erg = [];
    $("tr").each(function (index) {
        var row = {};

        var test = $(this).children();
        row['column1'] = test[0].textContent;
        row['column2'] = test[1].textContent;
        row['column3'] = test[2].textContent;
        row['column4'] = test[3].textContent;
        row['column5'] = test[4].textContent;
        row['column6'] = test[5].textContent;
        row['column7'] = test[6].textContent;        
        erg.push(row); 
    });
我想传递一个变量
var my_variable=“blabla”
,而不会破坏对象的结构。那么我怎么能把这个物体带到这样的结构中呢

Object{my_variable="my_variable_value"}, Object{my_table=[Object{...}, Object{...}]} //all the objects of the table
$.extend({},erg,my_变量)只是把我的对象弄乱了

我希望它在这个结构中,这样我就可以将它作为json传递给我的php脚本,并轻松地过滤我的变量。有任何提示、链接、代码片段吗?:)

您可以定义一个类并将所需的变量添加到其原型中。
首先,您需要一个小实用程序来实现这一点:

function createSharedStruct() {
  // Define a shared structure
  var Struct = function() {};

  // Define a method to define a shared variable
  Struct.share = function(variable, value) {
    Struct.prototype[variable] = value;
  };

  return Struct;
}
然后,更新您的代码:

// Create the shared structure
var rowClass = createSharedStruct();

// Register your shared variables
rowClass.share('my_variable', 'my_variable_value');

var erg = [];
$("tr").each(function (index) {
    var test = $(this).children();

    // Create a new row
    var row = new rowClass();
    row['column1'] = test[0].textContent;
    row['column2'] = test[1].textContent;
    row['column3'] = test[2].textContent;
    row['column4'] = test[3].textContent;
    row['column5'] = test[4].textContent;
    row['column6'] = test[5].textContent;
    row['column7'] = test[6].textContent;        
    erg.push(row); 
});

// No matter when you share a variable, it will be defined among 
// all instances of the same struct.
rowClass.share('my_other_var', 42);
现在您可以访问共享变量:

console.log(erg[0].my_other_variable); // 42
console.log(erg[1].my_other_variable); // 42
.

您可以定义一个类并将所需的变量添加到其原型中。
首先,您需要一个小实用程序来实现这一点:

function createSharedStruct() {
  // Define a shared structure
  var Struct = function() {};

  // Define a method to define a shared variable
  Struct.share = function(variable, value) {
    Struct.prototype[variable] = value;
  };

  return Struct;
}
然后,更新您的代码:

// Create the shared structure
var rowClass = createSharedStruct();

// Register your shared variables
rowClass.share('my_variable', 'my_variable_value');

var erg = [];
$("tr").each(function (index) {
    var test = $(this).children();

    // Create a new row
    var row = new rowClass();
    row['column1'] = test[0].textContent;
    row['column2'] = test[1].textContent;
    row['column3'] = test[2].textContent;
    row['column4'] = test[3].textContent;
    row['column5'] = test[4].textContent;
    row['column6'] = test[5].textContent;
    row['column7'] = test[6].textContent;        
    erg.push(row); 
});

// No matter when you share a variable, it will be defined among 
// all instances of the same struct.
rowClass.share('my_other_var', 42);
现在您可以访问共享变量:

console.log(erg[0].my_other_variable); // 42
console.log(erg[1].my_other_variable); // 42

.

我不确定您希望在哪一点添加该属性,但您可以简单地用另一个对象包装数组,然后将属性添加到同一个对象中

这基本上就是Florent的答案,但使用对象文字而不是“类”和原型:

// (your current code)
var wrapper = {
    my_variable: 'something',
    my_table: erg
};

我不确定您想在哪一点添加它,但您可以简单地用另一个对象包装您的数组,并将您的属性添加到同一个对象

这基本上就是Florent的答案,但使用对象文字而不是“类”和原型:

// (your current code)
var wrapper = {
    my_variable: 'something',
    my_table: erg
};

哇!谢谢你的回答!但我只是很愚蠢,没有处理对象或JSON的经验。我的问题有一个简单的解决方案:var json={table:erg,variable:my_variable};我的答案被否决有什么正当的理由吗?也许是因为你把解决方案复杂化了(顺便说一句,不是我)。哦,对不起。我把你的答案投了赞成票,因为在我阅读的那一刻,它是唯一的答案。但后来我读到了另一个更简单的解决方案,我也对这个方案投了更高的票。但你只能投一个答案,我不知道。但我认为另一个答案应该首先出现,因为它是最好、最简单的解决方案。抱歉:(我同意这太复杂了,我会按照你的建议去做的。我原以为这是OP所期望的。哇!谢谢你的回答!但我很愚蠢,在处理对象或json方面没有经验。我的问题有一个简单的解决方案:var json={table:erg,variable:my_variable};我的答案被否决有什么正当理由吗?也许是因为你把解决方案复杂化了(顺便说一句,不是我)。哦,对不起。我投票赞成你的答案,因为当时我正在阅读它,它是唯一的一个。但后来我读了另一个,更简单的解决方案,我也投票赞成。但你只能投票赞成一个答案,我不知道。但我认为另一个答案应该首先出现,因为它是最好和最简单的解决方案。对不起:(好吧,我同意这太复杂了,我会按照你的建议去做的。我以为这是OP期望的。嗯,这是一个比我更干净的方法。呵呵。是的,我几分钟前就知道了。我现在觉得很傻:D,真的那么简单。嗯,这是一个比我更干净的方法。呵呵,是的,我几分钟前就知道了。我现在觉得自己很愚蠢:D真的很简单。