-1

関数に引数として渡す変数を「リテラル」として使用できるかどうか疑問に思っています(問題を説明するより良い方法がわかりません。おそらく例で問題が解決するでしょう):

banana = yellow;
minion = cute;

function ex(banana, minion) {
    banana.minion;
}

// What I want is: yellow.cute

編集 私は、私が何を意味するのかを正確に尋ねていなかったかもしれないと思います. 申し訳ありません。物事を明確にするかもしれない実際のコードは次のとおりです。

function ex(banana, minion){
    createjs.Tween.get(banana, {override: true}).to({banana: minion}, -(value + -banana.minion) * speed, createjs.Ease.ease);
console.log(banana); // returns 'yellow'
console.log(minion); // returns 'cute'
console.log(banana.minion); // returns 'undefined'
console.log(banana[minion]); // returns 'undefined' too
}

bananaだから、私が定義したもの、またはminion「リテラル」であると定義したものを渡したいので、createjs.Tween.get(yellow, {override: true}).to({yellow: cute}, -(value + -yellow.cute) * speed, createjs.Ease.ease);

4

2 に答える 2

2

名前を文字列として渡し、配列構文を使用してプロパティにアクセスできます。

function ex(banana, minion) {
  return banana[minion];
}

オブジェクトの左側も文字列にしたい場合 (たとえば、bananaを使用できますeval(banana)[minion]が、コード レビューで眉をひそめるかもしれません。これは、プロパティとメソッドの両方で機能することに注意してください。eval(banana)[minion]()少し戻って、なぜこの種の適度にばかげたことをする必要があるのか​​ を尋ねてください:)

于 2013-06-24T08:57:30.667 に答える
1

メンバー演算子としてドット表記の代わりにブラケット表記を使用する

 banana[minion];
于 2013-06-24T08:58:36.457 に答える