2

オブジェクトリテラル表記を使用して、次のようにゲッターでオブジェクトを定義できることを見てきました。

var foo = {
            get bar() { return 3; }
          }

「enumerable」など、上記の「bar」の他のプロパティ記述子属性を設定できるオブジェクト リテラル構文はありますか?

それとも、' get/set ' が ECMAScript5 オブジェクト リテラル表記でサポートされている唯一のプロパティ記述子属性ですか?

4

3 に答える 3

1

いい質問だ...でも、私はそれができるとは思わない。

getプロパティ記述子set同じように機能する演算子として定義されます。

Object.defineProperty(foo, "bar", {value : 3,  
                                   writable : true,  
                                   enumerable : true,  
                                   configurable : true,
                                   get : function(){ return value; },  
                                   set : function(newValue){ value = newValue;}
                                  });  

JavaScript演算子のリストを調べてみると、get と set を除いて、他の記述子に類似したものは見当たりません。

于 2012-04-18T19:16:34.310 に答える
1

いいえ、使用する必要がありますObject.defineProperty

これは仕様が言うことです:

オブジェクトリテラル:

{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }

PropertyNameAndValueList:

PropertyAssignment
PropertyNameAndValueList , PropertyAssignment

プロパティの割り当て:

PropertyName : AssignmentExpression
get PropertyName() { FunctionBody }
set PropertyName( PropertySetParameterList ) { FunctionBody }
于 2012-04-18T20:45:59.837 に答える
0

使用したい唯一のものはセッター構文​​ですが、おそらくそれを知っているでしょう。

一部のブラウザーは__proto__、オブジェクトのプロトタイプを設定できるプロパティをサポートしていますが、指定されておらず、毎日削除される可能性があります。

通常のプロパティ名のように使用します。

var foo = {
    __proto__: bar
};
于 2012-04-18T17:34:19.747 に答える