我基本上是来自Java背景,所以我写了一个JavaScript代码,其中一个变量充当私有变量,这是我的代码

var myObject = function(){
    var teamScore = 0;
    return {
        playSix: function() {
            teamScore += 6
        },

        playFour: function() {
            teamScore = teamScore +4
        },

        getScore: function(){
            return teamScore;
        },

        getMScore : teamScore
    }
}();



 myObject.playSix();

alert ("What is the team score  :" + myObject.getScore())
alert ("What is the M-score  :" + myObject.getMScore)


所需的输出是

球队得分是6分;
  什么是M分数:6

但是实际输出是

球队得分是6分;
  什么是M分数:0

为什么M分数是0?

最佳答案

这是因为getMScore初始化为零,并且永远不会更改。

属性getMScore不是对teamScore变量的引用,它仅在创建对象时使用teamScore变量的值进行初始化。更改teamScore变量后,getMScore属性不受影响。

10-07 19:48