2017-06-10 10 views
0

私はJavaScriptで名前の文字列を使用してオブジェクトをパラメータとして渡すにはどうすればよいですか?

bigRow = {size:'long', color:'pink'}; 

だが、私は、例えば、rowプロパティを持つ別のオブジェクトtableを、持っているとしましょうオブジェクトを持っています

table = { 
    row: 'bigRow', 
    column: 'smallColumn' 
}; 

は、私が参照としてtableのプロパティ値を使用して関数にパラメータとしてオブジェクトのbigRow」を渡すことはできますか?

は私が

function (bigRow) 

のように働くだろう

function (table.row) 

ような何かを書くことができます両方がfunction(bigRow)であることが判明していますが、前者はオブジェクトへの接続せずに文字列として出てくる

+1

メイクを '' someContainerObject'のプロパティをbigRow'、あなたが言うことができる '関数呼び出し(someContainerObject [table.row])'。 – nnnnnn

+1

通常は(JavaScriptは非常に柔軟性があり、構造化されていないため)、本当に悪い考えのように聞こえます。通常、 'table'に格納する方が良い値があります(例えば、オブジェクト自体を格納できる文字列ではなく)か、実際に名前で探す必要がある場合は、' rows = {bigRow:{ ...}}; 'func(行[table.row])'を実行できます。 – melpomene

答えて

2

そんなことは考えられません。

var rowTypes = { 
    bigRow : {size:'long', color:'pink'}, 
    //other rows if necessary... 
} 

そして、識別子として文字列を使用してrowTypesオブジェクトのメンバにアクセス:

function (rowTypes[table.row]) 
1

はい、あなたはしかし、あなたが設定する必要がありますすることができしかし、あなたはそうのような別のオブジェクト内bigRowを入れることができます"this"キーワードを使用して現在のドキュメントのプロパティとしてオブジェクトを作成します。

<!DOCTYPE html> 
<html> 
<body> 
    <div id="demo"></div> 
</body> 
</html> 

<script> 
this.bigRow = {size:'long', color:'pink'}; 
this.table = { 
    row: 'bigRow', 
    column: 'smallColumn' 
}; 

function myFunction(myRow){ 
    document.getElementById('demo').innerHTML = myRow.size; 
    console.log(myRow); 
} 

myFunction(this[table.row]); 
</script> 

https://jsfiddle.net/0p5afpj9/

0

私はanswer to a similar questionに出くわしました。両方のオブジェクトがグローバルである場合にはどうやら、これは動作します:

function (this[ table.row ]) 
関連する問題