Javascript setter和getter返回不同的输出

时间:2014-05-07 10:24:52

标签: javascript 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 个答案:

答案 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());

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty