Шаблон модуля JavaScript - Защищенные участники?

Алло! Это мой первый вопрос!

Я экспериментирую с шаблоном модуля, продвигаемым Дагом Крокфордом и другими. Пока что я очень доволен этим, но я немного не уверен в том, как лучше всего справиться с определенным типом наследования.

У меня все сводится к голому делу с использованием кошек и млекопитающих, хотя мое реальное намерение состоит в том, чтобы создавать объекты для игры на основе плиток на холсте.

Но вот мой случай «животных» с использованием браузера:

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();

Что меня беспокоит в этом подходе, так это то, что мне пришлосьvoice публичная собственность, чтобы кошка могла ее изменить.

Что я действительно хочу, так это что-то вроде «защищенной» видимости (из Java, ActionScript и т. Д.), Чтобыcat можно изменитьvoice без кого-либо с доступом кfelix быть в состоянии изменить это.

Есть ли решение?

Ответы на вопрос(3)

Ваш ответ на вопрос