0

私はJavaScriptとプログラミング全般に非常に慣れていません。この質問は、RPG のコンテキストにあります。戦闘関数にキャラクター オブジェクトがあり、a) 定義済みのキャラクター クラスと b) 入力に基づいて能力関数を呼び出そうとしています。

// player example
var player = {
  this.pClass = 0; // denotes character class; could also be 1 or 2
}  

// ability list
var ability = {
  // first character class
  0: {
    1: function() {some action;},
    2: function() {some other action;}
  },
  // second character class
  1: {
  // same deal here
  }
};

var input = prompt("Enter an action number:");

次のようなプレーヤー クラスと選択した番号を渡すことで、アクションを呼び出せるようにしたいと考えています。

ability.{player.pClass}.{input}();

私はこれに正しい方法でアプローチしていますか?if...else if可能であれば、すべてのオプションに対してステートメントを反復しないことをお勧めします。助けてくれてありがとう。

4

2 に答える 2

1

角括弧表記を使用して、プロパティ名の動的アクセスを許可します。

ability[player.pClass][input]();

ただし、オブジェクト リテラルには、数値のプロパティ名を含めないでください。代わりに、実際に意味のある名前を付けてみてください。それ以外の場合、これが意図したものである場合は、代わりに配列を使用してください。

var abilities = [function() {..}, function() {..}];
于 2013-04-27T02:18:01.507 に答える