Javascript setter и getter возвращают разные выходные данные
Я использовал ключевое слово get и набор JavaScript, но я не думаю, что я правильно его реализую.
_maxWinnings: -1,
get maxWinnings() {
return this._maxWinnings;
},
setMaxWinnings : function( value ) {
this._maxWinnings = value;
// This works fine.
// this.maxWinnings = value;
}
Я сделал серию тестов, и результаты не такие, как ожидалось.
console.log( this.sgd._maxWinnings );
> -1
console.log( this.sgd.maxWinnings );
> -1
console.log( this.sgd.setMaxWinnings(10) );
> undefined
console.log( this.sgd._maxWinnings );
> 10
console.log( this.sgd.maxWinnings );
> -1
Я надеюсь, что вы могли бы помочь мне.
2 ответа
Решение
setMaxWinnings : function( value ) { // This works fine: // this.maxWinnings = value; }
Нет, это не так. Вы написали метод установки, который вам нужно вызвать (например, sgd.setMaxWinnings(10))
, но если вам нужен установщик присваивания свойств, вам нужно будет использовать
set maxWinnings( value ) {
this._maxWinnings = value;
}
Ключевые слова get и set не работают таким образом.
function SGD()
{
this._maxWinnings = 0;
return this;
}
Object.defineProperty(SGD, 'maxWinnings', {
get : function () { return this._maxWinnings; },
set : function (val) { this._maxWinnings = val; }
});
var sgd = new SGD();
sgd.maxWinnings = 100;
alert(sgd.maxWinnings.toString());