2008-12-14 9 views
14

En la recomendación de Stackers, he estado leyendo el excelente de Crockford Javascript: The Good Parts.La mejor manera de utilizar las "piezas buenas" de Javascript

Es un gran libro, pero como gran parte está dedicado a describir la mejor manera de usar la funcionalidad básica de Javascript, no estoy seguro de cómo puedo poner su consejo en práctica sin duplicar los esfuerzos de muchos otros programadores de Javascript .

Tome este pasaje, por ejemplo:

Al realizar un nuevo objeto, puede seleccionar el objeto que debe ser su prototipo. El mecanismo que proporciona Javascript para hacer esto es desordenado y complejo, pero se puede simplificar significativamente. Añadiremos un método create a la función Object. El método create crea un nuevo objeto que utiliza un objeto antiguo como prototipo.

if (typeof Object.create !== 'function') { 
Object.create = function(o) { 
    var F = function() {}; 
    F.prototype = o; 
    return new F(); 
} 

podría añadir manualmente el código a todos mis proyectos de Javascript, pero hacer el seguimiento de todo lo que iba a ser un dolor enorme.

¿Hay bibliotecas que implementan las recomendaciones La Parte Good 's y por lo tanto me ahorrará la molestia de tener que llevar un registro de ellos (/ escribir físicamente a todos fuera)?

+0

+1 para leer el libro de Crockford –

+0

+1 buena pregunta! También siento que estoy reinventando la rueda. – orip

+0

Este es exactamente el tipo de pregunta que tuve después de terminar de leer su libro. –

Respuesta

5

Prototype tiene muchas características excelentes, incluyendo un Class helper que maneja los detalles de JS "herencia" a través del prototipo del objeto.

Editar: maldita sea, me olvido de que jQuery (mi propia biblioteca de elección) tiene jQuery.extend

+0

'jQuery.extend()' copia los atributos de los objetos pasados ​​en un objeto de destino. No puede especificar un prototipo para el objeto de destino.IOW: Tiene un propósito diferente de 'Object.create()'. – feklee

1

Dojo ha seguido muy de cerca las ideas de Crockford. Por ejemplo, hay una implementación del fragmento de código que ha implementado anteriormente bajo la función dojo.delegate (en una forma aún más rápida).

No creo que haya un proyecto específico que siga sus recomendaciones a la perfección. La mayoría de los juegos de herramientas en realidad están en desacuerdo con bastantes de sus recomendaciones y patrones. Si te estás preguntando sobre la funcionalidad específica, como el fragmento de código anterior, valdría la pena preguntar qué herramientas específicas del libro quieres usar en tus proyectos.

0

Creo que YUI es lo más parecido a lo que Crockford enseña en su libro. (Él es el arquitecto de Yahoo también y tiene sentido)

0

Eche un vistazo a es5-shim, una biblioteca que proporciona una cuña - aunque incompleta - para Object.create() y otras cosas.

Cuestiones relacionadas