我正在复制myObj到tempMyObj
var tempMyObj = myObj;
Run Code Online (Sandbox Code Playgroud)
tempMyObj.entity是一个对象数组.我正在tempMyObj.entity根据某些条件进行修改.问题是如果我修改tempMyObj.entity了myObj.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中有一个简单的对象(或哈希):
var settings = {
link: 'http://example.com',
photo: 'http://photos.com/me.jpg'
};
Run Code Online (Sandbox Code Playgroud)
我需要它的副本.是否有一种settings.clone()类型方法会给我另一个具有相同属性的对象?我正在使用jQuery,很高兴使用jQuery实用程序方法(如果存在).
我在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中完全克隆一个对象.我使用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)
是否有任何解决方案可以在第二个警报上实现?
我很迷惑.我创建一个副本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)
我有一个类似这样的课程:
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对象?
我有这个代码:
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类实例?
我尝试了普通的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)
我希望克隆是深度/递归的.IE也克隆了作为对象的所有属性.
我有一些图书馆代码在我身上无休止地骑自行车.
我不清楚如何在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) 我正在寻找修改和数组响应和插入特定索引上的元素.这就是我的状态:
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!