相关疑难解决方法(0)

修改JavaScript对象的副本会导致原始对象发生更改

我正在复制myObjtempMyObj

var tempMyObj = myObj;
Run Code Online (Sandbox Code Playgroud)

tempMyObj.entity是一个对象数组.我正在tempMyObj.entity根据某些条件进行修改.问题是如果我修改tempMyObj.entitymyObj.entity也正在修改.

for (j = 0; j < myObj.length; j++) {
    if (myObj[j].type == "TableShape") {
        var dupEntites = new Array();
        for (i = 0; i < myObj[j].entities.length; i++) {
            if (chk.value != myObj[j].entities[i].id) {
                var obj = {};
                obj.text = myObj[j].entities[i].text;
                obj.id = myObj[j].entities[i].id;
                dupEntites.push(obj);
            }
            else {
                if (chk.checked)
                {
                    var obj = {};
                    obj.text = myObj[j].entities[i].text;
                    obj.id = myObj[j].entities[i].id;
                    dupEntites.push(obj);
                }
            }
        } …
Run Code Online (Sandbox Code Playgroud)

javascript copy object

38
推荐指数
6
解决办法
3万
查看次数

如何在JQuery中复制/克隆散列/对象?

我在Javascript中有一个简单的对象(或哈希):

var settings = {
  link: 'http://example.com',
  photo: 'http://photos.com/me.jpg'
};
Run Code Online (Sandbox Code Playgroud)

我需要它的副本.是否有一种settings.clone()类型方法会给我另一个具有相同属性的对象?我正在使用jQuery,很高兴使用jQuery实用程序方法(如果存在).

javascript jquery clone copy javascript-objects

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

在javascript中指定值而不是引用

我在javascript中分配对象时遇到了一些问题.

看看这个重现我的问题的示例代码.

var fruit = {
   name: "Apple"
};

var vegetable = fruit;
vegetable.name = "potatoe";
console.log(fruit);
Run Code Online (Sandbox Code Playgroud)

它记录

Object {name: "potatoe"}
Run Code Online (Sandbox Code Playgroud)

如何将值而不是对象的引用分配给另一个对象?

javascript variable-assignment

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

在javascript中完全克隆一个对象

我试图在javascript中完全克隆一个对象.我使用jquery知道以下解决方案:

var newObject = jQuery.extend({}, oldObject);
// Or
var newObject = jQuery.extend(true, {}, oldObject);
Run Code Online (Sandbox Code Playgroud)

但问题是,对象类型丢失了:

var MyClass = function(param1, param2) {
    alert(param1.a + param2.a);
};
var myObj = new MyClass({a: 1},{a: 2});
var myObjClone = jQuery.extend(true, {}, myObj);
alert(myObj instanceof MyClass);      // => true
alert(myObjClone instanceof MyClass); // => false
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方案可以在第二个警报上实现?

javascript jquery clone

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

Javascript - 如何克隆对象?

我很迷惑.我创建一个副本myObjOne,比我删除一个条目myObjOne和JS删除我的副本(myObjTwo)中的条目呢?但为什么?

  myObjOne = {};
  myObjOne['name'] = 'xxx';
  myObjOne['id'] = 'yyy';
  myObjOne['plz'] = 'zzz';  

  // clone
  myObjTwo = myObjOne;

  // remove something
  delete myObjOne['name'];

  console.dir(myObjTwo);
Run Code Online (Sandbox Code Playgroud)

例如 http://jsbin.com/itixes/edit#javascript,html

javascript clone copy

19
推荐指数
2
解决办法
4万
查看次数

JavaScript克隆"类"实例

我有一个类似这样的课程:

function Element(){
    this.changes = {};
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个这样的"类"的实例,如此el = new Element().这些实例存储在一个数组中,如elements.push(el).

这个元素数组现在存储在一个对象中,然后将其推入一个数组中states.

现在有些情况下我需要其中一个元素的副本,所以我需要做类似的事情var cloned = $.extend(true, {}, states[0]).在这里,我假设我们正在克隆第一个州.

现在的问题是我得到的,state[1].elements[0]仍然指向原始实例.因此,我对克隆对象所做的任何更改都会改变原始对象.

陷入如此微不足道的问题是令人沮丧的......

这是我为测试它而创建的小提琴:http: //jsfiddle.net/E6wLW/

javascript jquery clone object extend

16
推荐指数
1
解决办法
1664
查看次数

JavaScript对象被推入数组

可能重复:
如何正确克隆JavaScript对象?

我有这个代码:

var temp = [];
var obj = {name:"1"};
temp.push(obj);
obj.name = "2";
temp.push(obj);
Run Code Online (Sandbox Code Playgroud)

我期待的是真实的:

temp[0].name == "1" && temp[1].name == "2";
Run Code Online (Sandbox Code Playgroud)

实际发生了什么:

temp[0].name == "2" && temp[1].name == "2";
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,以及我如何能得到我所期待的?

javascript

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

如何克隆JavaScript类实例?

如何克隆JavaScript类实例?

我尝试了普通的jQuery扩展,但这只是返回一个vanilla对象.我在堆栈上查看了许多其他答案,但找不到如何克隆实例.

function Parent(name) {
    this.name = name;
}

Parent.prototype.sayHello = function() {
    console.log('Hello my name is ' + this.name);
}

function Child(name) {
    Parent.call(this, name);
}

Child.prototype = Object.create(Parent.prototype);

var child = new Child('Billy');

var clone = $.extend(true, {}, child);
clone.name = 'Bob';

child.sayHello();
clone.sayHello();

console.log(child instanceof Child);
console.log(clone instanceof Child);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/39gjA/

我希望克隆是深度/递归的.IE也克隆了作为对象的所有属性.

javascript jquery

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

在Javascript中,当执行深层复制时,如何避免循环,因为属性为"this"?

我有一些图书馆代码在我身上无休止地骑自行车.

我不清楚如何在javascript中最好地执行循环检测和避免.也就是说,没有程序化的方法来检查一个物体是否来自"这个"参考,是吗?

这是代码.谢谢!

setAttrs: function(config) {
    var go = Kinetic.GlobalObject;
    var that = this;

    // set properties from config
    if(config !== undefined) {
        function setAttrs(obj, c) {
            for(var key in c) {
                var val = c[key];

                /*
                 * if property is an object, then add an empty object
                 * to the node and then traverse
                 */
                if(go._isObject(val) && !go._isArray(val) && !go._isElement(val)) {
                    if(obj[key] === undefined) {
                        obj[key] = {};
                    }
                    setAttrs(obj[key], val);  // <--- offending code; 
                                              // one of my …
Run Code Online (Sandbox Code Playgroud)

javascript deep-copy kineticjs

14
推荐指数
1
解决办法
4606
查看次数

如何使用setState插入数组,反应js

我正在寻找修改和数组响应和插入特定索引上的元素.这就是我的状态:

this.state = {arr: ['', '', '', '' ]}
Run Code Online (Sandbox Code Playgroud)

我想做的是编译它arr[index] = 'random element'以反应js setState语法.我试图做的是:

this.setState({ arr[index]: 'random element' })
Run Code Online (Sandbox Code Playgroud)

但是失败了,ty!

javascript arrays reactjs

13
推荐指数
4
解决办法
3万
查看次数