Ada*_*mat 12 javascript reset javascript-objects
在页面加载,我创建了两个JavaScript对象,objDemo1而objDemo1Backup其中后者仅仅是第一的精确副本.
例如
objDemo1 {
sub_1 = { something: 123, somethingElse: 321 },
sub_2 = { something: 456, somethingElse: 654 }
}
Run Code Online (Sandbox Code Playgroud)
我可以修改值sub_以及添加/删除新sub_的但是我正在编辑的唯一对象是objDemo1.即我永远不会改变objDemo1Backup
我有一个重置按钮,单击该按钮将重置objDemo1为最初加载页面时的状态(即objDemo1 = objDemo1Backup).这是我遇到问题的地方..
如何设置objDemo1到objDemo1Backup?
我试过了:
objDemo1 = objDemo1Backup;
Run Code Online (Sandbox Code Playgroud)
和
objDemo1 = null;
var objDemo1 = objDemo1Backup;
Run Code Online (Sandbox Code Playgroud)
...以及类似的变化,但似乎没有任何工作.有任何想法吗?
objDemo1Backup它与我创建它并objDemo1更改时完全相同.objDemo1 = objDemo1Backup...我只是无法弄清楚替换对象的语法.sch*_*jos 13
我正在使用angularjs,我花了一些时间来找出如何将对象复制到另一个对象.通常你会通过调用clone或者在angular copy中获得一个对象克隆:
var targetObj = angular.copy(sourceObj);
Run Code Online (Sandbox Code Playgroud)
这将为您提供源对象的新克隆实例(带有新引用).但是快速查看文档会揭示复制的第二个参数:
angular.copy(sourceObj, targetObj)
Run Code Online (Sandbox Code Playgroud)
这样,您可以使用源的字段和方法覆盖目标对象,并保留目标对象引用.
在JavaScript中,对象通过引用传递,而不是通过值传递.所以:
var objDemo, objDemoBackup;
objDemo = {
sub_1: "foo";
};
objDemoBackup = objDemo;
objDemo.sub_2 = "bar";
console.log(objDemoBackup.sub_2); // "bar"
Run Code Online (Sandbox Code Playgroud)
要获得副本,您必须使用复制功能.JavaScript本身没有,但这是一个clone实现:如何正确克隆JavaScript对象?
var objDemo, objDemoBackup;
objDemo = {
sub_1: "foo";
};
objDemoBackup = clone(objDemo);
objDemo.sub_2 = "bar";
console.log(objDemoBackup.sub_2); // undefined
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22024 次 |
| 最近记录: |