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

Passing variables owned by objects into a function

 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;
}

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

当您将 _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];
}

您的函数有第二个参数,_atr,您将 _person.strength 传递给它。

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

如果您指定所有变量、函数参数和函数 return 值的类型,您将对自己有很大帮助。