2016-04-30 8 views
1

私は関数があり、関数の中にいくつかのキー値を宣言したオブジェクトを持っているとしましょう。 すべての関数がjavascript内の関数オブジェクトである場合、その中にキー値のペアを宣言することは全く合法です。関数のキー値のペアを宣言するjavacript

var a ={ 
    a: "shiv", 
    b: "shiv1", 
    c: function(){ 
    L:"shiv1", 
    console.log(L); 
    } 
} 

どのようにこれらのキーにアクセスできますか。どのようなシナリオで私はキーの値のペアを関数に追加する必要があります。これが何を意味するのか。この関数の例では、どのようにしてLキーにアクセスできますか?

編集1: Console.log行はエラーになります。 letが機能の意味でのキーを宣言するん私たちがこれだけのコード

var a ={ 
    a: "shiv", 
    b: "shiv1", 
    c: function(){ 
    L:"shiv1", 
    } 
} 

を持っていると言います。私はLキーをどのようにすることができます私は

+0

関数はオブジェクトである場合でもない、あなただけのキー '行うことはできません:[値]はどこでも、それは' this.key = [値]そうあなただけ作成しているしなければならないであろうラベル。また、大文字小文字の問題 – adeneo

答えて

0

にアクセスする必要がある場合、これは、エラーをスローする必要があります。

L:"shiv1", 
console.log(l); 

おそらくたい:

a.c().L; 

c: function(){ 
    return {L:"shiv1"}; 
    } 

そしては、としてそれにアクセス


例:

var a ={ 
 
    a: "shiv", 
 
    b: "shiv1", 
 
    c: function(){ 
 
    return {L:"shiv1"}  
 
    } 
 
} 
 

 
alert(a.c().L);

+0

* "これはエラーを投げなければなりません:"実際にはこれは完全に有効な構文です(もちろん、後に ''、 ')はありません。 – dfsq

+0

それは非常に正しいです。これは間違いを投げるでしょう。しかし、あなたが提案しているのは、オブジェクトを返してからそのオブジェクトの特定のプロパティにアクセスすることです。関数の中でキーLを宣言し、ユースケースのシナリオは何かを尋ねたいだけです。 –

+0

@ dfsq 'l'はそこでは定義されません。残りの部分はコンマであっても、ラベルとして検証を渡すことができます。 – Shomz

1

あなたはすべての関数は、あなたが実際にそれにプロパティを設定することができることを意味、またオブジェクトです。実際、すべての関数はlengthプロパティを持ちます。これは、この関数が受け入れる正式な引数の数を示します。

ただし、関数のプロパティを設定するために使用している構文は、どのように行う必要がありますか。完全に有効な構文を使用していても、これはプロパティ定義構文ではなくlabel statementです。それが有用な場合

function c() { 
    console.log(c.L) // => "I'm a property of c function" 
} 
c.L = "I'm a property of c function"; 

var a = { 
    a: "shiv", 
    b: "shiv1", 
    c: c 
} 

:あなたはあなたのケースで関数オブジェクトにプロパティを設定したい場合は、このようにそれを行うだろうか?私はそこには、機能のようなlengthのプロパティのような限られた使用があると言ったが、多くの場合、関数レベルでプロパティを直接設定する必要はありません。

0

関数内で行ったように、キーを宣言することはできません。 これは動作しません:

c: function(){ 
    L:"shiv1", //Declaration don't work in this context 
    console.log(l); //Don't work 
} 

これは( "機能" の文を削除してください)してみてください。また

c: { 
L:"shiv1" 
} 

を、あなたはこれを行うことができます。

c: function() { 
    var test = "shiv1"; 
    return test; 
} 

あなたの場合パラメータで作業したい:

c: function(a, b) { 
    var test = a + " shiv1 " + b; 
    return test; 
} 

または:

c: function(a, b) { 
    var total = a + b; 
    return total; 
} 
+0

なぜL: "shiv1"が間違っていますか? –

+0

あなたが行ったような機能の中でこれを行うことができない理由は、誰かがコメント{L: "shiv1"}でコメントした通りです。あるいは、私がコメントしたように変数を使うことができます。 – Gutemberg

+0

私はちょうど尋ねています、これは何を意味するか、または意味します。これはこの宣言のユースケースです –