biological cells and/or individual computers on a network, only able to communicate with messages (...)” “OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.”
polimórfico, mas existe um outro aspecto do polimorfismo que é mudar o comportamento da superclasse na subclasse. Deixemos para quando falarmos de herança.
da superclasse na subclasse. Na herança prototípica não existe distinção entre instância e classe, um objeto qualquer pode ser utilizado como protótipo para criação de outro (objetos estes dividindo um protótipo em comum). Prototípicos são dinâmicos, podemos alterá-los em tempo de execução. Esqueça classes abstratas, sealed, interfaces, etc.
this.barulho = barulho } Animal.prototype.apresentacao = function () { console.log('Eu sou ' + this.nome + ' e faço ' + this.barulho) } var cao = new Animal('cão', 'auuuu') function Pato (barulho) { Animal.call(this, 'pato', barulho) } Pato.prototype = Object.create(Animal. prototype) Pato.prototype.quack = function () { console.log(this.barulho) } var pato = new Pato('quack!') var pato2 = new Pato('queeeeeeeeeck')
• Em JavaScript nosso típico private não existe. “Lots of so called object oriented languages have setters and when you have an setter on an object you turned it back into a data structure.”
que propriedades iniciadas por "_" são privadas // nenhum tratamento especial é feito pela linguagem // funcionam como uma propriedade qualquer this._raio = diametro / 2 }
o raio apenas a função construtora // e expomos o que for necessário via funções var _raio = diametro / 2 this.setDiametro = function (diametro) { _raio = diametro / 2 } this.getDiametro = function (diametro) { return _raio * 2 } }
} Object.defineProperty( Circulo.prototype, 'PI', { value: 3.1415, enumerable: true, writable: false // apesar de a escrita não gerar erro (é ignorada), funciona como uma constante } )
A linguagem é dinâmica não só no que diz a respeito a sua sintaxe ou tipagem, mas também em como OO é feito. Não tente fazer OO da forma clássica, entenda bem como JavaScript funciona e arquitete a solução para sua necessidade. E claro, lembre-se de evitar as más partes!
A linguagem é dinâmica não só no que diz a respeito a sua sintaxe ou tipagem, mas também em como OO é feito. Não tente fazer OO da forma clássica, entenda bem como JavaScript funciona e arquitete a solução para sua necessidade. E claro, lembre-se de evitar as más partes!