现在,这段代码
var gridArray:Array = [[],[],[],[],[],[]];
gridArray[0][0] = new gridProperties;
//gridProperties has gridX and gridY i.e. gridArray[0][0].gridX
function clearGridSquare(gridSquare:gridProperties):void
{
gridSquare = null;
}
function test():void
{
clearGridSquare(gridArray[0][0]);
trace (gridArray[0][0]);
}
产生
[object gridProperties]
而不是null。我理解,因为一个对象是一个引用,即使它在技术上作为一个值传递给该函数,它的作用就像它作为引用传递一样。通过这种方式,我可以在函数(gridSquare.gridX = 1)中更改say,原始对象的gridX或gridY属性,但实际上我无法使对象本身为null。我发现如果我在函数中执行此操作,我可以将其设为null:
gridArray[gridSquare.gridY][gridSquare.gridX] = null;
但这似乎我真的很糟糕,而且很迂回。有更优雅的解决方案吗?
答案 0 :(得分:2)
您不能使对象为null,因为“gridSquare”是对“gridArray [0] [0]”的引用。因此,通过设置“gridSquare”,您只需将数据“gridArray [0] [0]”的本地引用设置为NULL,而不是将实际数据设置为NULL。我希望你的函数将第一个和第二个索引放入你想要归零的数组中。然后在函数中你可以做...
gridArray[i][j] = null