Si entiendo correctamente, de acuerdo con Douglas Crockford http://javascript.crockford.com/private.html, los métodos "privilegiados" son similares a los que conocemos como métodos "públicos". y los métodos "públicos" son algo diferente.Métodos públicos y privilegiados en javascript: ¿Por qué se llaman así?
Así es como yo lo entiendo:
métodos "privilegiados" pueden acceder a las variables privadas ya que está definida en el interior del cierre cuando se define el resto de las variables privadas.
var C = function(){ var private; this.privilegedMethod = function(){ /* blah blah */ }; } var cObj = new C();
métodos "público" son los que se agregan al objeto fuera del objeto mismo, a través de prototipo.
var C = function(){ /* blah blah */ } C.prototype.publicMethod = function(){ /* blah blah */ }; var cObj = new C();
Encuentro estas definiciones de "privilegiada" y "público" muy confuso. Creo que el método "privilegiado" no es más que un método público, tal como lo conocemos desde la programación orientada a objetos. Y creo que el método "público" es el que debería nombrarse como algo más. Si lo piensas, es un tipo de función extraña, es un miembro del objeto pero no puede acceder a ninguna otra variable privada, lo que significa que no contribuye a la encapsulación. Es casi como un método de ayuda independiente para el objeto.
Así que me preguntaba, ¿por qué Douglas Crockford creó estos términos confusos? ¿Y por qué la comunidad javascript adoptó estas terminologías? O si estoy equivocado sobre algo, por favor corrígeme.
JavaScript no es un lenguaje OOP, sino que se basa en la herencia prototípica. Vale la pena mencionar las diferencias de forma diferente :) – singpolyma
@singpolyma: http://stackoverflow.com/questions/3536048/is-oop-possible-in-javascript –
Lo mejor que se puede hacer es ignorar todos los entornos de trabajo de 'visibilidad' y usa JavaScript tal como es. Si tiene propiedades privadas, guárdelas según corresponda. El uso de cierres para simular la visibilidad solo va muy lejos. No es una bala mágica y puede ser un gran dolor cuando las cosas se vuelven más complejas (herencia, por ejemplo). –