JavaScript Module Pattern - Membros protegidos?

Hullo! Esta é a minha primeira pergunta!

Estou experimentando o padrão de módulo promovido por Doug Crockford e outros. Até agora, estou muito feliz com isso, mas estou um pouco inseguro sobre a melhor maneira de lidar com um certo padrão de heranç

Eu fiz com que ele se resumisse a uma caixa de ossos nus usando gatos e mamíferos, embora minha intenção real seja criar objetos para um jogo baseado em azulejos em tela.

Mas aqui está o caso de 'animais' dos meus ossos nus usando um alerta do navegador:

var ZOO = ZOO || {};
//
ZOO.mammal = function () {
   "use strict";
   var voice = "squeak.mp3", // default mammal sound
      utter = function () {
         window.alert(this.voice);
      };
//
   // public interface
   return {
      utter: utter,
      voice: voice
   };
};
//
ZOO.cat = function () {
   "use strict";
   // hook up ancestor
   var thisCat = ZOO.mammal();
   thisCat.voice = "miaw.mp3";
   return thisCat;
};
//
var felix = ZOO.cat();
felix.utter();

O que me incomoda nessa abordagem é que eu tive que fazervoice uma propriedade pública para que o gato possa modificá-l

O que eu realmente quero é algo como visibilidade 'protegida' (de Java, ActionScript etc.), para quecat pode modificarvoice sem ninguém com acesso afelix poder modificá-lo.

Há uma solução

questionAnswers(3)

yourAnswerToTheQuestion