Прямо сейчас, этот код
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]
вместо нуля. Я понимаю, что поскольку объект является ссылкой, даже если он технически передается в качестве значения функции, он действует так, как если бы он был передан в качестве ссылки. Таким образом, я могу изменить, скажем, свойства gridX или gridY исходного объекта изнутри функции (gridSquare.gridX = 1), но я не могу фактически сделать сам объект нулевым. Я обнаружил, что могу сделать его нулевым, если вместо этого сделаю это в функции:
gridArray[gridSquare.gridY][gridSquare.gridX] = null;
но, похоже, я действительно плохой и окольный способ сделать это. Есть ли более элегантное решение?