Я пытаюсь изменить приватного члена, используя метод 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)
Когда я пытаюсь выполнить Привилегированный метод restartGame, счет будет правильно установлен на ноль. Но когда я пытаюсь очистить приватный массив (в этом примере достижения). Закрытый массив не очищается. Как правильно это сделать?