2012-03-26 10 views
0

同じオブジェクト内の別の関数から変数を呼び出す簡単な方法があるかどうかを知りたいだけですか?この例では同じオブジェクト内の別の関数から変数を呼び出す方法は?

var comedy = { 
schadenfreude: function() { 
    var number = prompt("Provide me a number."); 
}, 
irony: function() { 
    this.schadenfreude(); 
    for(i = 0; i < this.schadenfreude.number(); i++){ 
     return i; 
    } 
} 
}; 
console.log(comedy.irony()); 

私はirony functionと私のためのループに番号を促さschadenfreude functionおよび使用からvar numberをつかむことを望みます。助けてくれてありがとう。

+0

'schadenfreude'関数が' number'値を返すようにします。 – slash197

答えて

4

"schadenfreude"関数の "number"変数は、その関数にとってローカルです。あなたがそれに乗ることができても(あなたはできません)、それはあなたを良くしません。

あなたは(おそらく)したいことは次のとおりです。また

var comedy = { 
    number: 0, 
    schadenfreude: function() { 
     this.number = prompt("Provide me a number."); 
    }, 
    irony: function() { 
     this.schadenfreude(); 
     for(i = 0; i < this.number; i++){ 
      alert(i); 
     }; 
    } 
}; 
console.log(comedy.irony()); 

、あなたがthis.numberを参照したいようにあなたは、「シャーデンフロイデ」オブジェクトの「数」プロパティに値を割り当てる可能性があり"皮肉"機能。どちらの場合でも、コード内のコメントに記載されているように、forループにはreturnというステートメントが含まれているということは、ユーザーが負の数を返す場合は常に「irony」関数が返され、そうでない場合はundefinedです。

+0

ありがとうございます。それは私が知る必要があったものです。私はvarが関数にローカルであることは知っていたが、オブジェクト内にすべて格納されていたので、ルールが変更されたかどうかはわからなかった。私はvarオブジェクト内のすべての関数で使用されるオブジェクトレベル内で定義する必要がありますね。ご協力ありがとうございました。 –

+0

Stack Overflowが7分で私を許してくれたら、私も計画しています。 –

+0

編集のために@jAndyありがとう! – Pointy

0

同じオブジェクトに定義されている別のメンバーからローカル変数を取得するように思えます。それは直接可能ではありません。ローカル変数は定義されている関数/メンバにスコープされており、それらに直接アクセスする方法はありません。関数は、アクセスするために何らかの方法で明示的に呼び出し元に返さなければなりません。

関連する問題