2017-02-02 11 views
0

関数を使用してオブジェクトを作成しようとしていますが、ゲッター関数の構文を理解できません。テスト関数内関数内のJavascriptゲッター関数

var myObject = 
{ 
    0:123, 

    get a() 
    { 
     return this[0]; 
    } 
} 


console.log("This works: " + myObject.a); 


function test() 
{ 
    this[0] = 123; 

// error 
    this.a = get function() 
    { 
    return this[0]; 
    }; 
} 


var myTest = new test(); 

console.log(myTest.a); 

、get関数の割り当ては、セミコロンエラーをスローし、私はキーワード「機能」を削除した場合、それは、getが定義されていないことを言います。

関数内の現在のオブジェクトにゲッター関数を割り当てるにはどうすればよいですか?

+0

を私は{...}) 'VAR Fを考える=(機能を得ることはありません'構文は正しいので、代わりに' var f = get {...} 'を使ってください。あなたの関数 'test'は解析できませんが、' function() 'を削除すると正常に動作します – Aaron

+1

[getterの定義](https://developer.mozilla.org)に使用する正しい構文ではないので、/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters) –

答えて

2

あなたはこのような何かを試みることができる:

var myObject = 
{ 
    0:123, 

    get a() 
    { 
     return this[0]; 
    } 
} 


console.log("This works: " + myObject.a); 


function test() 
{ 
    this[0] = 123; 

    Object.defineProperties(this, {"a": { get: function() { 
     return this[0]; 
    }}}); 
} 


var myTest = new test(); 

console.log(myTest.a); 
+0

私がやろうとしていたものに似た略記バージョンがありますか? – John

+0

私はそうは思わない。ショート・ウェイは、オブジェクト・リテラルでのみ使用できます。 \tこれは私が得ることができるほど近いです、そして、この場合、あなたは 'これを'戻っていません。 機能試験(){ \t \t \tリターン{\t \t \t \t "0":123、 \t \tこの[ "0"](){ \t \t \tリターンを得ます。 \t \t} \t \t \t \t \t} \t} –

0

多分これはあなたのために動作します:

 function test() 
     { 
      this[0] = 123; 

      Object.defineProperty(this, "a", { get: function() { return this[0]; } }); 
     } 
関連する問題