我一直在使用关键字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
我希望你能帮助我。
答案 0 :(得分:3)
setMaxWinnings : function( value ) { // This works fine: // this.maxWinnings = value; }
不,它没有。您已编写了一个需要调用的setter方法(如sgd.setMaxWinnings(10))
,但如果您需要属性赋值设置器,则需要使用
set maxWinnings( value ) {
this._maxWinnings = value;
}
答案 1 :(得分:1)
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());