2016-08-19 3 views
0

みんな!JSオブジェクトをキャッチする

私はJSとOOPで一般的に私の最初のステップを与えていますが、私のレベルではあまりにも多くのコードを作成しようとしていますが、私は自分のセットが好きで、 "object.a" "object.a = value"と呼び、それらを "getA"や "setA"と呼ぶことはなく、とりわけ関数( "object.a()"や "object.a(value)"とはまったく異なっています)。

私はやって自分の道を見つけるために、このページをデザインするが、それは狂気私を運転している:

  1. 「WA」はインクリメントを続け、なぜ私は知らない、それはあまりにも「メッセージでフリップアウトまでそれが価値です多くの再帰 "。
  2. 私はaを取得し、 "coso"の内側に "a"を見るように設定する方法は見当たりません。

誰かが私を助けることができますか? get a()機能がthis.aを読み取ろうとするので、あなたは無限再帰を取得している

<!doctype html> 
<html> 
<head> 
<link href="/style.css" rel="stylesheet" type="text/css"> 

<meta charset="utf-8"> 
<style> 
</style> 

<script> 
    function coso() { 
     var a = 1024; 

     coso.prototype = { 
      get a() {return this.a}, 
      set a(valor) {this.a = valor} 
     } 

     this.muestraA = function() {if(a === this.a) {alert("¡Yupi!")} else alert("A vale: " + a +", pero a vale: " + this.a)} 
    } 

    function GuardaA(valor) { 
     var obj = new coso(); 

     obj.a = valor; 

     obj.muestraA(); 

     return obj.a; 
    } 
</script> 
<title>Prueba Objeto</title> 
</head> 

<body> 
    <h1>Prueba Objeto</h1> 
    <form onchange="x.value=GuardaA(wa.value)"> 
     <label for="wa">Valor para A</label> 
     <input type="number" id="wa"> 
     <label for="x">A vale:</label> 
     <output id="x" for="wa"></output> 
    </form> 
    <footer></footer> 
</body> 
</html> 
+0

'var a'は' this.a'と同じものではありません。 – Barmar

+0

'this.a'は' get a() 'を呼び出し、' this.a'を読み込み、 'get a()'を呼び出すなど、無限の再帰を得ています。 – Barmar

答えて

0

は、ここに私のコードです。しかし、thisは、get a()関数を持つオブジェクトなので、その関数を繰り返し呼び出すなど繰り返します。

ローカル変数aにアクセスする必要があります。通常のプロパティの代わりにその変数を使用したいからです。ゲッターとセッターを定義することが重要です。

function coso() { 
    var a = 1024; 

    coso.prototype = { 
     get a() {return a;}, 
     set a(valor) {a = valor;} 
    } 

    this.muestraA = function() { 
     if(a === this.a) { 
      alert("¡Yupi!"); 
     } else { 
      alert("A vale: " + a +", pero a vale: " + this.a); 
     } 
    } 
} 
関連する問題