2017-10-04 4 views
0

私はOOPの学習を開始しなければならない小さなゲーム(クッキークリッカーなどのCS:GOバージョンのような)を作っているので、このプログラミングタイプは本当に新しいので、問題が発生します。値が正しく変更されていない、変数と同じ

これはスコープの問題だと確信していますが、これを解決する方法はありますか?ここで

は私のコードは、(私は私の問題でさらに説明します)です:

プロトタイプ:

function amelioration(Class1, Class2, Nom, Nombre, Prix, Ajout1, Ajout2) { 
    this.Class1 = Class1; 
    this.Class2 = Class2; 
    this.Nom = Nom; 
    this.Nombre = Nombre; 
    this.Prix = Prix; 
    this.Ajout1 = Ajout1; 
    this.Ajout2 = Ajout2; 
} 

    var glockClicker = new amelioration(".glockBtn .clickerUpgInpt1", ".glockBtn .clickerUpgInpt2", "glockClicker", 0, 20, 1, 1); 

機能(問題あり):

function buy(varAmelioration, Class1, Class2, Nom, Nombre, Prix, Ajout1, Ajout2, Multiplicateur) { 
     if (euroCount >= Prix) { 
      Nombre += 1; 
      euroCount -= Prix; 
      Prix *= Multiplicateur; 
      euroPerSec += Ajout1; 
      euroPerClick += Ajout2; 
      $("#caseSpot .casePerSec").val(euroPerSec); 
      $(Class1).val(Nombre); 
      Prix = parseInt(Prix); 
      $(Class2).val(Prix); 
      varAmelioration = new amelioration(Class1, Class2, Nom, Nombre, Prix, Ajout1, Ajout2); 
     } 
    } 

イベント:

$(".glockBtn").click(function() { 
     buy(glockClicker, ".glockBtn .clickerUpgInpt1", ".glockBtn .clickerUpgInpt2", glockClicker, glockClicker["Nombre"], glockClicker["Prix"], glockClicker["Ajout1"], glockClicker["Ajout2"], 1.5); 
    }); 

ここで私の問題はすべてここにあります。 「イベント」を起動すると、「プロトタイプ」の内容が「」という関数buy()がそのことを行います。

しかし、私は二度目の再トリガー「イベント」何も変わっていない、すべての値が変化しなかった(価格は=「グランプリは」など、まだ同じです...)と私は理解していませんなぜ、「glockClicker」に「プロトタイプ」という名前の新しい値を割り当てようとしましたが、それでも値は変更されません。変数のようにオブジェクトの値を変更する方法については、

あなたが理解していないことを教えてくれるのではないかと私は十分に分かりましたか?私のコードの

ショートバージョン:

function f(x) { 
    this.x = x; 
} 
var a = new f(1); 
console.log(f); 

function b(myVar) { 
    myVar += 1; 
    console.log(myVar); 
} 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 
+0

をあなたの問題を再することができます関数f(x){x = 2; } var x = 1; f(x) console.log(x); // 1 'となる。 – melpomene

+0

Okコードの短いバージョンを返す –

+0

...もう一度自分で問題を見つけましたが、コードの短いバージョンを作るというアイデアをくれたメルポメネに感謝します。私は今夜​​のための時間がないので、私は答えを明日与えるだろう –

答えて

0

コード機能していない:取り組んでいる

function f(x) { 
this.x = x; 
} 
var a = new f(1); 
console.log(f); 

function b(myVar) { 
    myVar += 1; 
    console.log(myVar); 
} 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 

コード:

function f(x) { 
this.x = x; 
} 
var a = new f(1); 
console.log(f); 

function b(myVar, val) { 
    myVar[val] += 1; 
    console.log(myVar[val]); 
} 

b(a, "x"); 
console.log(a); 
console.log(a["x"]); 

b(a, "x"); 
console.log(a); 
console.log(a["x"]); 
関連する問題