我以前遇到過這個問題,並且爲了得到我需要的結果而砍掉了它,但是最後我還是碰到了牆,而且我不明白爲什麼這會一直出現。暫時的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