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。
答案 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
参数传递任何内容都没有意义,因为它无论如何都会被忽略。
如果你指定了所有变量,函数参数和函数返回值的类型,你会自己帮助很多。