我试图克隆带有闭包的对象。试过angular.copy()
function Foo() {
var data;
this.x = function(val) {
if (val) {
data = val;
}
return data;
}
}
var a = new Foo();
var b = angular.copy(a);
b.x(); // undefined
a.x(5); // set x
b.x(); // 5. expected undefined

答案 0 :(得分:1)
如果您愿意,可以在clone
对象上创建自己的Foo
方法。您只需要确保克隆任何相关数据(如果data
f.e.是一个对象,下面的方法只会存储对同一对象的引用)。
function Foo() {
var data;
this.x = function(val) {
if (val) {
data = val;
}
return data;
}
this.clone = function() {
var n = new Foo();
n.x(data);
return n;
}
}
var a = new Foo();
var b = a.clone();
a.x(5); // set x
console.log("a.x: " + a.x()); // 5
console.log("b.x: " + b.x()); // undefined