【发布时间】:2011-08-09 18:05:12
【问题描述】:
我正在尝试使用我定义的 Privileged 方法更改私有成员。我创建了一个简单的类来给你一个我当前遇到的问题的例子:
// Constructor
function Player(name) {
// Private
var achievements = [];
function emptyArray(emptyThisArray) {
emptyThisArray = [];
};
// Privileged
this.restartGame = function() {
this.score = 0;
emptyArray(achievements);
};
this.addAchievement = function() {
achievements[achievements.length] = "Medal " + achievements.length;
};
this.getAchievements = function() {
return achievements;
};
// Public
this.name = name;
this.score = 0;
}
// Public
Player.prototype.getName = function() {
return this.name;
};
var player1 = new Player("Ben");
player1.score = 100;
player1.addAchievement();
player1.addAchievement();
player1.getAchievements();
player1.restartGame(); // restart the game
player1.score; // returns 0
player1.getAchievements(); // return an array of two achievements: ["Medal 0", "Medal 1"] (should actually return an empty array)
当我尝试执行 Privileged 方法 restartGame 时,分数将正确设置为零。但是当我试图清除私有数组时(在这个例子中成就)。私有阵列没有被清除。这样做的正确方法是什么?
【问题讨论】:
标签: javascript oop methods private