2010-04-18 11 views
7

Me parece que faltan muchas funciones de alto nivel en la mayoría de las bibliotecas javascript conocidas, como jquery, YUI ... etc. Tomando la manipulación de cadenas como ejemplo, startsWith, endsWith, contains, lTrim, rTrim, trim, isNullOrEmpty ... etc. Estas funciones son en realidad muy comunes.¿Hay una biblioteca de JavaScript que contenga un conjunto completo de funciones de alto nivel utilizadas comúnmente?

Me gustaría saber si existe una biblioteca/plugin javascript de una biblioteca de JavaScript que llene estos huecos (incluyendo pero no limitado a la manipulación de cadenas)?

Sería genial si la biblioteca no anula el prototipo.

+0

¿Por qué no agregarlo al prototipo de cadena? – cletus

+2

@cletus Porque puede tener conflictos con bibliotecas/códigos escritos por otras personas. – bobo

Respuesta

9

Eche un vistazo a underscore.js (lamentablemente, no hay manipulación de cadenas, pero hay muchas otras cosas buenas).

3

La mayor parte de esas funciones de cadena están disponibles mediante otros métodos asociados con el objeto de cadena, por ejemplo

var myString = 'hello world'; 

myString.indexOf('hello') == 0; //same as startsWith('hello'); 

Usted puede envolver estas funciones hasta en otras funciones si así lo desea. Creo que agregar prototipos al objeto de cadena sería la manera de ir allí y cualquier biblioteca que encuentres probablemente siga esa ruta de todos modos.

+0

Sí, están disponibles utilizando otros métodos asociados con el objeto de cadena, pero esto no sería lo suficientemente alto. – bobo

2

La biblioteca ms ajax core contiene todos esos métodos de cadena así como los métodos de fecha, etc. básicamente un valeroso intento de llevar .net a js.

No necesita cargar toda la pila MS Ajax js, solo el archivo central.

1

Todo esto es fácil de implementar con envolturas si no desea extender el prototipo

var StringWrapper = (function(){ 
    var wrapper = { 
     string: null, 
     trim: function(){ 
      return this.string.replace(/^\s+|\s+$/g, ""); 
     }, 
     lTrim: function(){ 

     } 
    }; 

    return function(string){ 
     wrapper.string = string; 
     return wrapper; 
    }; 
})(); 

StringWrapper(" aaaa bbbb ").trim(); /// "aaaa bbbb" 

Las funciones sólo se crean una vez, así que es bastante eficiente. Pero usar un contenedor sobre un objeto auxiliar incurre en una llamada de función adicional.

+1

¿Puede explicar para qué es esta línea: 'lTrim: function() {...'? – FellyTone84

1

underscore.string parece que podría satisfacer sus necesidades. Así es como lo describen:

Underscore.string es biblioteca de JavaScript para una cómoda manipulación con cadenas, extensión para Underscore.js inspirado por Prototype.js, Right.js, subrayado y hermoso lenguaje Ruby.

Underscore.string le ofrece varias funciones útiles: mayúsculas, limpiar, incluye, contar, escaparHTML, unescapeHTML, insertar, empalmar, startsWith, endsWith, titleize, trim, truncar, etc.

Cuestiones relacionadas