我以前遇到过这个问题,并且为了得到我需要的结果而砍掉了它,但是最后我还是碰到了墙,而且我不明白为什么这会一直出现。暂时的Javascript对象
在JavaScript中,如何捕获仅指向原始对象的浅拷贝?这让我疯狂。我知道JS中的所有东西都是一个指针,但是必须有一种方法来获得一个深度拷贝,它在修改时不会更改原始对象。下面是我与工作代码:
MyGame.runAllPossibleMoves = function() {
MyGame.ai_object.board = MyGame.tetrominos;
MyGame.ai_object.piece = MyGame.tetromino;
for(var i = 0; i < 10; i++){
if(i < MyGame.ai_object.piece.pivot.x){
while(moveLeft() && i < MyGame.ai_object.piece.pivot.x){
//do piece movement
}
hardDrop();
}
console.log(MyGame.ai_object.piece.pivot.x + ',' + MyGame.ai_object.piece.pivot.y);
console.log(MyGame.tetromino.pivot.x + ',' + MyGame.tetromino.pivot.y);
MyGame.ai_object.board = MyGame.tetrominos;
MyGame.ai_object.piece = MyGame.tetromino;
//console.log(MyGame.ai_object.piece);
}
}
的对象,MyGame.tetromino
,正在更新到任何MyGame.ai_object.piece
是,当我真正想要做的是改变我创建了临时变量和使用MyGame.tetromino
重置我的临时对象。我哪里错了?
所以,如果我理解正确,我会调用这个函数,它会返回给我一个对象的浅拷贝。 – sparkyShorts
@sparkyShorts,是的。 'var copy = Object.shallowCopy(original)' – Alnitak
所以我实现了它,就像你所建议的那样,但我仍然没有得到浅拷贝。我看到并理解你的代码是如何工作的,但我不明白它是如何创建浅拷贝的。你能详细说明一下吗? – sparkyShorts