在javascript中修改对象值的问题
我有以下代码在javascript中修改对象值的问题,javascript,jquery,Javascript,Jquery,我有以下代码 var emp={"EmployeeLists":[{"ID":1,"NAME":"Anbu","Salary":80000},{"ID":2,"NAME":"Anand","Salary":90000}]}; // Inserting a new object into EmployeeLists emp.EmployeeLists.splice(2,0,emp.EmployeeLists[1]) console.log(JSON.stringify(emp)); 输出:{“
var emp={"EmployeeLists":[{"ID":1,"NAME":"Anbu","Salary":80000},{"ID":2,"NAME":"Anand","Salary":90000}]};
// Inserting a new object into EmployeeLists
emp.EmployeeLists.splice(2,0,emp.EmployeeLists[1])
console.log(JSON.stringify(emp));
输出:{“员工名单”:[{“ID”:1,“姓名”:“Anbu”,“薪水”:80000},{“ID”:2,“姓名”:“Anand”,“薪水”:90000},{“ID”:2,“姓名”:“Anand”,“薪水”:90000}
// Modifying inserted object NAME Anand into MANI
emp.EmployeeLists[2].NAME="MANI";
console.log(JSON.stringify(emp));
输出:{“员工名单”:[{“ID”:1,“姓名”:“Anbu”,“薪水”:80000},{“ID”:2,“姓名”:“**MANI**”,“薪水”:90000},{“ID”:2,“姓名”:“**MANI**”,“薪水”:90000}
添加新对象后。我试图将对象的名称修改为Anand到MANI,但它被修改为对象的名称Two和Two,Two这是一个很好的问题!您看到的是对象的底层共享,因为如果您不小心的话,Javascript会像对待C中的指针一样秘密地对待对象。让我们重写它以生成对象的克隆。我们将使用(在Javascript中克隆对象在一般情况下很烦人)
你的问题不清楚,你能解释清楚你想做什么吗?
function clone(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = obj.constructor();
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
}
return copy;
}
emp.EmployeeLists.splice(2, 0, clone(emp.EmployeeLists[1]));
emp.EmployeeLists[2].NAME = "MANI";
// {"EmployeeLists":[{"ID":1,"NAME":"Anbu","Salary":80000},{"ID":2,"NAME":"Anand","Salary":90000},{"ID":2,"NAME":"MANI","Salary":90000}]}