Demonstra como usar o IIFE para criar membros privados em JS.
Você provavelmente não o usará para criar getter e setter, como no meu exemplo.
É apenas para fins de demonstração. <br/>
IIFE === Expressão de função chamada imediatamente
var Dog = (function() {
var name = "defaut name";
var DogInner = function() {
this.getName = function() {
return name;
};
this.setName = function(value) {
name = value;
};
};
return DogInner;
})(); // this does the trick
var dog = new Dog();
dog.name = "Frankenweenie"; // has no effect on the name in Dog object
console.log(dog.getName()); // logs: defaut name
dog.setName("Frankenweenie");
console.log(dog.getName()); // logs: Frankenweenie