2012-05-07 14 views
4

私はMDNのJavaScriptコードの一部を見ましたが、私はどのようにコードの下で動作するのだろうか、それはどういう意味ですか?奇妙なjsonの使用

var obj = { get x() { return 17; } }; 
+5

これはJSONではありません。 – AlienWebguy

+1

ここでget演算子のすべてを読んでください:https://developer.mozilla.org/ja/JavaScript/Reference/Operators/get –

答えて

5

は、私の知る限りでは、キーワードgetはちょうどゲッターとしてx()を分類し、自己呼び出しに表示されます。 jScript(IE)ではサポートされていません。予約語ではありません。

あなたがそうのようにそれを参照したい:obj.x; // 17

をlamenの用語では、これらは同じように動作します:xプロパティ用のゲッターを指定された

var foo = { get x() { return 17; } }; 
document.write(foo.x);​ // 17 

var bar = { x: function() { return 17; } }; 
document.write(bar.x());​ // 17 
+0

これは全く同じではありません。 'foo.x'と' bar.x() ' –

+1

私は同じようにコーディングされているわけではなく、同じように動作します。 – AlienWebguy

0

は、それはJSONとは何の関係もありません。 JSONはJSオブジェクトの有効なイニシャライザなので混乱しますが、すべてのJS初期化子が有効なJSONであるとは限りません。

この構文は、obj.xから読み取ると、その値を取得するためにその関数を呼び出すことを意味します。

var obj = { 
    x: 17 
} 

、あるいはまた:

1

var obj = { get x() { return 17; } };はに等しい

var objがオブジェクトを宣言することを意味し、 get x() { return 17; }がobjオブジェクトのプロパティを宣言し、17の値を持つ
var obj = { 
    x: (function(){ 
     return 17; 
    })() 
} 

var myVar = obj.x;//Equals to 17 
+0

これはちょっと間違っています...これはgetters/setterの構文です –

+0

申し訳ありません、私は編集して投稿を修正しました。私は今それが正しいと思います。 –

+0

「取得する」とはどういう意味ですか? 。私は同じものではない2つのことです。あなたはjavascriptコンソールから 'dir(obj)'を見ることができます。 –