Javascript JS与函数参数相同的对象

Javascript JS与函数参数相同的对象,javascript,object,Javascript,Object,-我有一个函数,可以创建带有一些默认值的x*y数组。我希望这个值是2个数组的长度。但通过传递新数组(2)作为参数,它似乎总是传递相同的对象,因此以后更改数组中的任何单元格都会影响所有对象。如何使此数组使每个单元格的每个默认值相同,但也独立 在fidle上,我更改某些字段的值,并提醒依赖于第一个字段的其他字段,因为每个单元格都有相同对象的默认值 我有一个函数,它用一些默认值创建x*y数组。我希望这个值是2个数组的长度 但是它不再是一个x*y2维数组,而是一个x*y*23维数组!为此,您需要一个不同

-我有一个函数,可以创建带有一些默认值的
x*y数组
。我希望这个值是2个数组的长度。但通过传递
新数组(2)
作为
参数,它似乎总是传递相同的对象,因此以后更改数组中的任何单元格都会影响所有对象。如何使此数组使每个单元格的每个
默认值相同,但
也独立

在fidle上,我更改某些字段的值,并提醒依赖于第一个字段的其他字段,因为每个单元格都有相同对象的默认值

我有一个函数,它用一些默认值创建
x*y
数组。我希望这个值是2个数组的长度

但是它不再是一个
x*y
2维数组,而是一个
x*y*2
3维数组!为此,您需要一个不同的函数

似乎通过将
新数组(2)
作为参数传递,它总是传递相同的对象,因此以后更改数组中的任何单元格都会影响所有对象

对<代码>新数组(2)
创建一个对象,然后代码构造一个二维数组,每个字段都指向它

如何使他们独立

您需要使用不同的函数,如

function newB(x, y, z) {
    var result = new Array(x);
    for (var i=0; i<x; i++) {
        result[i] = new Array(y);
        for (var j=0; j<y; j++) {
            result[i][j] = new Array(z);
        }
    }
    return result;
}

var fields = newA(5, 5, 2);
函数newB(x,y,z){
var结果=新数组(x);

对于(var i=0;i创建(浅层)副本:
result[i][j]=value.slice();
它是否适用于每种类型的值参数?字符串/多维数组等?为此,您需要创建array@OPOPO:不,但需要理解的是,虽然JavaScript是一种传递值语言,但实际上您从未拥有对象值……只是一个引用。因此,基本类型将自动复制,但objects将只复制引用。因此,数组需要手动复制操作。普通对象的复制更为详细。是否使用其他第三方库,如jQuery
function newB(x, y, valuemaker) {
    if (typeof valuemaker != "function") {
        var value = valuemaker || 0;
        valuemaker = function(){ return value; };
    }
    var result = new Array(x);
    for (var i=0; i<x; i++) {
        result[i] = new Array(y);
        for (var j=0; j<y; j++) {
            result[i][j] = valuemaker();
        }
    }
    return result;
}

var fields = newA(5, 5, function() {
    return new Array(2);
});