オブジェクトリテラル表記を使用して、次のようにゲッターでオブジェクトを定義できることを見てきました。
var foo = {
get bar() { return 3; }
}
「enumerable」など、上記の「bar」の他のプロパティ記述子属性を設定できるオブジェクト リテラル構文はありますか?
それとも、' get/set ' が ECMAScript5 オブジェクト リテラル表記でサポートされている唯一のプロパティ記述子属性ですか?
オブジェクトリテラル表記を使用して、次のようにゲッターでオブジェクトを定義できることを見てきました。
var foo = {
get bar() { return 3; }
}
「enumerable」など、上記の「bar」の他のプロパティ記述子属性を設定できるオブジェクト リテラル構文はありますか?
それとも、' get/set ' が ECMAScript5 オブジェクト リテラル表記でサポートされている唯一のプロパティ記述子属性ですか?
いい質問だ...でも、私はそれができるとは思わない。
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 を除いて、他の記述子に類似したものは見当たりません。
いいえ、使用する必要がありますObject.defineProperty。
これは仕様が言うことです:
オブジェクトリテラル:
{ } { PropertyNameAndValueList } { PropertyNameAndValueList , }PropertyNameAndValueList:
PropertyAssignment PropertyNameAndValueList , PropertyAssignmentプロパティの割り当て:
PropertyName : AssignmentExpression get PropertyName() { FunctionBody } set PropertyName( PropertySetParameterList ) { FunctionBody }
使用したい唯一のものはセッター構文ですが、おそらくそれを知っているでしょう。
一部のブラウザーは__proto__、オブジェクトのプロトタイプを設定できるプロパティをサポートしていますが、指定されておらず、毎日削除される可能性があります。
通常のプロパティ名のように使用します。
var foo = {
__proto__: bar
};