Bueno, la fealdad es subjetiva, pero veamos.
Por lo general escribe:
function Foo() {}
Foo.prototype.method1 = function() { /*...*/ };
Foo.prototype.method2 = function() { /*...*/ };
se extiende el objeto prototype
un constructor function con las propiedades que desea ser heredada a las instancias creadas por el nuevo operador.
Por ejemplo con var obj = new Foo();
que está creando una instancia de la Foo
constructor, ese objeto heredará todas las propiedades enlaza con el objeto Foo.prototype
y otros objetos más altos en el prototype chain.
El método del Crockford hace lo mismo, que el método se define en el objeto Function.prototype
, todas las funciones heredan de ese objeto, por lo que se puede llamar al método como este:
function Foo() {}
Foo.method('method1', function() { /*...*/ });
Foo.method('method2', function() { /*...*/ });
Básicamente sólo cueros la prototype
palabra del código, que Crockford considera fea ...
"JavaScript las partes buenas" es un libro muy bueno, pero creo que se basa en la perspectiva personal que Douglas Crockfor d tiene del lenguaje.
Estoy de acuerdo con él, con un montón de cosas, pero también estoy de acuerdo con algunos aspectos ...
El uso de la palabra "prototipo" parece más explícita y evidente al leer el código. Gracias por la respuesta :) – Matrym
Estoy de acuerdo. Crockford está ladrando el árbol equivocado en este caso IMO. – bobince