87,903
社区成员
发帖
与我相关
我的任务
分享
var arr = new Array(1,2,3); //原始数组。
var newarr = new Array();
newarr = arr.concat();
newarr[0] = newarr[0] + 100;
alert("克隆出来的数组的第一个元素的值为:" + newarr[0] + ",原始数组的值为:" + arr[0]);
//这样对于简单的数据类型可以达到完全克隆的效果。新元素的值为101 ,原始数组里的值不变。1。
//但是,请看下面。
//上面的方法达到了简单数组克隆的目地了。现在新的问题来了
var arr = new Array(); //原始数组。
var a = { name: "张三", age: 20 };
var b = { name: "李四", age: 30 };
var c = { name: "王武", age: 40 };
arr.push(a); arr.push(b); arr.push(c);
var newarr = new Array();
newarr = arr.concat();//复制
//删除其最后一个元素。
newarr.pop();
//更改其中李四的年龄为100
newarr[1].age = 100;
//打印结果看下。
alert("复制的数组的长度为:" + newarr.length + ",李四的年龄为:" + newarr[1].age);
alert("原始的数组的长度为:" + arr.length + ",李四的年龄为:" + arr[1].age);
// 现在新元素的长度变成 2了。而并没有影响到原始数组的数组长度,原始数组的数组长度依然为3.但:数组当中的第二个元素,也就是李四的年龄。。。在我们更改了复制的新数组里面的年龄时,,,原始数组也变了。。这个不是我们想要的结果。。。。
Array.prototype.tag = "Object根对象";
function loads() {
var values = $("#stimes option:selected").text(); //获取SELECT选中的值。
alert(values);
}
//这段代码去掉第一句正常的,如果加上第一句。Jquery将报错。不支持方法了。具体原因
//有兴趣的大神,可以去探访探访,我的解决方法。把代码写在jquery的引用之前。
//这样就没问题了
var cloneOpr = {
cloneObj: function (obj) {
var newObj = [];
for (var i in obj) {
newObj[i] = obj[i];
}
return newObj;
},
cloneArr: function (arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'object') {
newArr.push(this.cloneObj(arr[i]));
} else {
newArr.push(this[i]);
}
}
return newArr;
}
};
var obj = {
id: 1
};
var obj2 = cloneOpr.cloneObj(obj);
obj2.id = 'Mike';
alert(obj.id);
alert(obj2.id);
var arr = [1, 'a', {id: '20'}];
var arr2 = cloneOpr.cloneArr(arr);
arr[2].id = "new id";
alert(arr[2].id);
alert(arr2[2].id);
parzniess = yuanshipraz.concat();//parzniess 为新数组,yuanshipraz为原始数组。
//前面我用这种就会出现那个问题。
Object.prototype.clones = function() {
var o = {};
for (var i in this) {
o[i] = this[i];
}
return o;
};
Array.prototype.clones = function() {
var arr = [];
for (var i = 0; i < this.length; i++)
if (typeof this[i] !== 'object') {
arr.push(this[i]);
} else {
arr.push(this[i].clones());
}
return arr;
};
function Inerts() {
parzniess = yuanshipraz.concat();
} //这样,我发觉了jquery库居然运行不走了。。同样的都是返回一个数组对象,我还专门调试了最终
//parzniess 的值,都一样。但是不明白的是为什么jquery库会报错了
Object.prototype.clone = function() {
var o = {};
for (var i in this) {
o[i] = this[i];
}
return o;
};
Array.prototype.clone = function() {
var arr = [];
for (var i = 0; i < this.length; i++)
if (typeof this[i] !== 'object') {
arr.push(this[i]);
} else {
arr.push(this[i].clone());
}
return arr;
};
Object.prototype.clone = function () {
var o = {};
for (var i in this) {
o[i] = this[i];
}
return o;
};
Array.prototype.clone = function () {
var arr = [];
for (var i = 0; i < this.length; i++)
if (typeof i !== 'object') {
arr.push(i);
} else {
arr.push(i.clone());
}
return arr;
};
var p1 = {
name: 'Rattz',
age: 20,
hello: function () {
return "I'm " + name;
}
};
var p2 = p1.clone();
p2.age++;
alert(p1.age);
var arr1 = [12, 'a', p1,{}];
var arr2 = arr1.clone();
arr2[2].name = 'Mike';
alert(arr1[2].name);