Шаблон модуля 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
быть в состоянии изменить это.
Есть ли решение?