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