将对象拥有的变量传递给函数
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 值的类型,您将对自己有很大帮助。
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 值的类型,您将对自己有很大帮助。