在AS3中,如何将作为函数参数传递的对象设置为null?

时间:2009-09-12 01:30:51

标签: actionscript-3

现在,这段代码

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;

但这似乎我真的很糟糕,而且很迂回。有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:2)

您不能使对象为null,因为“gridSquare”是对“gridArray [0] [0]”的引用。因此,通过设置“gridSquare”,您只需将数据“gridArray [0] [0]”的本地引用设置为NULL,而不是将实际数据设置为NULL。我希望你的函数将第一个和第二个索引放入你想要归零的数组中。然后在函数中你可以做...

gridArray[i][j] = null