相关疑难解决方法(0)

如何正确克隆JavaScript对象?

我有一个对象,x.我想把它复制为对象y,这样改变y就不要修改了x.我意识到复制从内置JavaScript对象派生的对象将导致额外的,不需要的属性.这不是问题,因为我正在复制我自己的一个文字构造的对象.

如何正确克隆JavaScript对象?

javascript clone javascript-objects

2922
推荐指数
42
解决办法
176万
查看次数

克隆对象没有引用javascript

我有一个包含大量数据的大对象.我想在其他变量中克隆它.当我设置实例B的一些参数时,原始对象中的结果相同:

var obj = {a: 25, b: 50, c: 75};
var A = obj;
var B = obj;

A.a = 30;
B.a = 40;

alert(obj.a + " " + A.a + " " + B.a); // 40 40 40
Run Code Online (Sandbox Code Playgroud)

我的输出应该是25 30 40.任何想法?

编辑

感谢大家.我改变了破坏的代码,这是我的结果:

Object.prototype.clone = Array.prototype.clone = function()
{
    if (Object.prototype.toString.call(this) === '[object Array]')
    {
        var clone = [];
        for (var i=0; i<this.length; i++)
            clone[i] = this[i].clone();

        return clone;
    } 
    else if (typeof(this)=="object")
    {
        var clone = {};
        for …
Run Code Online (Sandbox Code Playgroud)

javascript oop object

139
推荐指数
4
解决办法
16万
查看次数

设置一个变量等于另一个变量

我有一些关于在JavaScript中将变量设置为与另一个变量相等的问题。

假设我们创建一个对象,a然后设置b = a

var a = {
  fname: "Jon",
  lname: "Smith",
  age: 50
}

var b = a;
Run Code Online (Sandbox Code Playgroud)

我了解,如果更改,a的属性之一b也会更改,因为设置时b = a我们不会克隆a数据,而是创建对a数据的引用。例如,如果我们设置a.fname = "Sarah"的新值b.fname"Sarah"

如果a通过设置尝试“清除” a = {},则对象b将保持不变。我不明白为什么以这种方式操作对象会产生与第一个示例不同的结果。


我对以下情况也有疑问。

var x = 10;
var z = x;
Run Code Online (Sandbox Code Playgroud)

如果然后设置x = 20,则值z保持不变。根据我第一个问题中描述的行为,人们会认为的新值z将反映的新值x。有人可以解释一下我在这里缺少什么吗?

谢谢!

javascript variables javascript-objects

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

javascript ×3

javascript-objects ×2

clone ×1

object ×1

oop ×1

variables ×1