将对象拥有的变量传递给函数

时间:2015-03-23 21:19:25

标签: actionscript-3 variables

 function createPerson():void
{
 for(var i = 0;i < peopleArray.length; i++)
{
var _person = peopleArray[i];
_person.points = 10;
_person.strength = 2;
getAttribute(_person, _person.strength);// <-- Doesn't seem to want to accept _person.strength as a passable var

}

...

function getAttribute(_person, _atr):void
{
_atr = getNumber(0, 10); // Here is the problem
_person.points -= _atr;
}

如果我用“_person.strength”替换“_atr”(两者都没有引号),代码工作正常,但不会改变_person.strength。

2 个答案:

答案 0 :(得分:2)

当您将_atr作为_person.strength传递时,_person.strength仅作为值传递给该函数。 将(对象)_person_atr作为字符串传递。

function getAttribute(_person, _atr):void
{
    _person[_atr] = getNumber(0, 10); 
    // _person[_atr] is _person.strength if _atr is "strength".
    _person.points -= _person[_atr];
}

答案 1 :(得分:0)

您的函数有第二个参数_atr,您将_person.strength传递给。{/ p>

但是,您在此函数中首先要做的是将_atr的值更改为其他值。 向_atr参数传递任何内容都没有意义,因为它无论如何都会被忽略。

如果你指定了所有变量,函数参数和函数返回值的类型,你会自己帮助很多。