0
私は例えば、非列挙属性を持つjavascriptのクラスのインスタンスを作成することが可能であるかどうかを知る必要があり、私が行うには、このコードを望んでいた何javascriptコンストラクタで列挙できないプロパティを宣言できますか?
は// Constructor
function MyClass(a) {
Object.defineProperty(this, '_number', {
enumerable: false
});
this.number = a; // Call setter for '_number'
}
// Getters and setters for '_number'
Object.defineProperty(MyClass.prototype, 'number', {
get: function() {
return this._number;
},
set: function(n) {
// Validate 'n' here
this._number = n;
}
});
MyClass
の任意のインスタンスにプロパティ_number
を定義することです例えば、_number
のようなインスタンスのプライベート変数は、for in
構造体にはリストされないように、列挙できません。プライベート変数_number
を変更するには、number
ゲッター/セッターを使用します。
私は任意の助けをいただければ幸いです...ない成功とコンストラクタの内部とMyClass.prototype
の両方_number
とnumber
プロパティを宣言
を試してみました!
正しく質問を解釈した場合、OPは単にA' 'にnumber''の[値]を設定できませんでした'MyClass'の' Object.defineProerty() 'の中にありますか? – guest271314
ええ、そうかもしれませんが、コンストラクターのセッターから(最終的な)検証ロジックを実行したいと思うように思えます。検証が失敗し、それにもかかわらずインスタンスが作成された場合、 '0'がデフォルト値になります。 – Bergi