【发布时间】:2014-01-23 01:42:44
【问题描述】:
JavaScript setter 更新引用处的内部值,但返回值不正确。
var Game =
{
get points() {
return this._points;
},
set points(x){
x = Math.min(x,25);
this._points = x;
return this._points;
}
};
Game.points = 10 ;
console.log(Game.points); // outputs 10
var updatedPoints = (Game.points = 60);
console.log(updatedPoints); // outputs 60
console.log(Game.points); // outputs 25
“updatedPoints”的预期值为 25!
知道为什么会发生这种情况吗?你能建议是否有办法解决这个问题吗?
解决此问题的原因:确保 JS 代码按预期执行,可维护性!
【问题讨论】:
-
@FelixKling 预计 updatedPoints 的值为 25 ?
-
是的,我现在明白你的问题了。但是不,赋值表达式的结果是被赋值的值(即 60)。
-
我会使用逗号运算符 - 它更短:P var updatedPoints = ( (Game.points = 60), Game.points );
标签: javascript getter-setter javascript-objects ecmascript-5 javascript-engine