克隆簡單的問題我有一個點大約在JavaScript
function Point(x, y) {
this.x = x;
this.y = y;
};
正如你看到的,這是不能改變的。所以,我可以改變它的屬性,像
var p = new Point(2, 3);
p.x = 6;
我要添加克隆方法,以便預期的行爲將是
var p1 = new Point(2, 3);
var p2 = p1.clone();
p1.x = 6;
assert p1 != p2; //first assertion. pseudocode.
assert p2.x == 2; //second assertion. pseudocode.
爲了實現clone()
我在接下來的方式
function Point(x, y) {
this.x = x;
this.y = y;
this.clone = function() {
function TrickyConstructor() {
}
TrickyConstructor.prototype = this;
return new TrickyConstructor();
};
};
改寫點但是第二個斷言在我的實現中失敗了。我應該如何重新實現它?
可能重複(http://stackoverflow.com/questions/4459928/how-to-deep-clone-in-javascript) –