script español ejemplos ecmascript descargar definicion caracteristicas javascript

ejemplos - javascript español



¿Cuáles son los métodos de JavaScript útiles que amplían los objetos incorporados? (21)

¿Cuáles son sus métodos más útiles y prácticos que amplían los objetos incorporados de JavaScript como String, Array, Date, Boolean, Math, etc.?

Cuerda

Formación

Fecha

Nota: publique un método extendido por respuesta.


String.format

String.prototype.format = function (values) { var regex = //{([/w-]+)(?:/:([/w/.]*)(?:/((.*?)?/))?)?/}/g; var getValue = function (key) { if (values == null || typeof values === ''undefined'') return null; var value = values[key]; var type = typeof value; return type === ''string'' || type === ''number'' ? value : null; }; return this.replace(regex, function (match) { //match will look like {sample-match} //key will be ''sample-match''; var key = match.substr(1, match.length - 2); var value = getValue(key); return value != null ? value : match; }); };

Uso:

alert(''Program: {key1} {key2}''.format({ ''key1'' : ''Hello'', ''key2'' : ''World'' })); //alerts Program: hello world


Aquí está la buena extensión para el objeto Date que le permite formatear la fecha muy fácilmente. Utiliza la sintaxis de la fecha de PHP para que aquellos familiarizados con PHP lo obtengan en un instante. Otros tienen una gran lista de posibles cambios en el sitio también. Personalmente, no he encontrado una manera más fácil de formatear las fechas en varios formatos.

Formato de fecha


Aquí hay otra implementación del método String.replaceAll()

String.prototype.replaceAll = function(search, replace) { if (replace === undefined) { return this.toString(); } return this.split(search).join(replace); }

La diferencia entre esta y la solución publicada replaceAll es que esta implementación maneja correctamente los caracteres especiales de regexp en cadenas, así como permite la coincidencia de palabras



Esta es una función prototipo para capitalizar una cadena:

String.prototype.capitalize = function() { return this.charAt(0).toUpperCase() + this.slice(1); }


Estas dos son envolturas para insertar y eliminar elementos de una posición particular en una matriz porque no me gusta el splice nombre.

// insert element at index Array.prototype.insertAt = function(element, index) { this.splice(index, 0, element); } // delete element from index Array.prototype.removeAt = function(index) { this.splice(index, 1); }

Algunos métodos Array más útiles para evitar el uso de índices:

Array.prototype.first = function() { return this[0] || undefined; }; Array.prototype.last = function() { if(this.length > 0) { return this[this.length - 1]; } return undefined; }; Array.prototype.max = function(array){ return Math.max.apply(Math, array); }; Array.prototype.min = function(array){ return Math.min.apply(Math, array); };

Algunas funciones útiles de la biblioteca MooTools:

Function.delay

Se usa para ejecutar una función después de que hayan transcurrido los milisegundos dados.

// alerts "hello" after 2 seconds. (function() { alert("hello"); }).delay(2000); ​

Number.times

Similar al método de números de Ruby para números, acepta una función y la ejecuta N veces donde N es el valor de los números.

// logs hello 5 times (5).times(function() { console.log("hello"); });


Hay un buen artículo en http://maiaco.com/articles/js/missingArrayFunctions.php describe seis útiles funciones para agregar al prototipo de Array. Las funciones son linearSearch (lo mismo que indexOf dado en otra respuesta), binarySearch, retainAll, removeAll, unique y addAll. El artículo también incluye el código JavaScript para cada una de las seis funciones y el código de ejemplo que muestra cómo usarlos.


Hay un montón de funciones String.prototype de James Padolsey

https://github.com/padolsey/string.prototype

Éstas incluyen:

  • camelize
  • contiene
  • contar
  • encerrar
  • extraer
  • para cada
  • forEachWord
  • enlazar
  • muchos
  • aleatorizar
  • retirar
  • marcha atrás
  • acortar
  • ordenar
  • toDOM
  • recortar
  • envolver


La matriz contiene:

Array.prototype.contains = function(obj) { for (var i=0; i < this.length; i++) { if(this[i] === obj) return i; } return -1; }

Uso:

var arr = [1, 2, 3]; alert(arr.contains(2));

Esta pequeña función auxiliar te dice si tu matriz contiene un objeto. Si lo hace, se devuelve el índice del objeto, de lo contrario, se devuelve -1.

Consejo gratuito del viernes por la tarde: nunca modifiques el prototipo de objeto. Eso sería solo pedir un mundo de dolor, lo aprendí de la manera difícil :)


Los diversos prototipos de manipulación de listas siempre son geniales. Como solo quieres uno por publicación, solo publicaré foldl , que descubrí a través de SML ("pliega" la lista, de izquierda a derecha, tiene una contrapartida en foldr por supuesto).

Array.prototype.foldl = function(fnc,start) { var a = start; for (var i = 0; i < this.length; i++) { a = fnc(this[i],a); } return a; }

Algunos ejemplos triviales podrían ser:

var l = ["hello" , "world"]; l.foldl(function(i, acc) { return acc+" "+i; }, "") // => returns "hello world"

Lamentablemente, la falla de los métodos DOM estándar para devolver arreglos verdaderos hace que muchos de estos métodos sean bastante inútiles. Y si está utilizando un Lib de algún tipo, a menudo definen métodos como estos ya (mapa, filtro, existe, etc.).


PHP.JS es un muy buen esfuerzo para transferir la mayoría de las funciones de PHP a JavaScript. Actualmente tienen una lista extremadamente impresionante:

En línea en: http://phpjs.org/functions/index



Use la cadena de prototipos de esta manera:

String.prototype.AddWorld = function() { return this+''World'' } "Hello ".AddWorld(); // returns the string "Hello World"


Cadena Reemplazar todo:

String.prototype.replaceAll = function(search, replace) { //if replace is not sent, return original string otherwise it will //replace search string with ''undefined''. if (replace === undefined) { return this.toString(); } return this.replace(new RegExp(''['' + search + '']'', ''g''), replace); }; var str = ''ABCADRAE''; alert(str.replaceAll(''A'',''X'')); // output : XBCXDRXE


Date.toMidnight

Date.prototype.toMidnight = function(){ this.setMinutes(0); this.setSeconds(0); this.setHours(0) }


Function.prototype.bind de la biblioteca Prototype.

Similar a call y apply pero le permite devolver una referencia a una función que se llama en un contexto particular en lugar de ejecutarlo inmediatamente. También le permite curry parámetros. Es tan útil que se convirtió en parte de ECMAScript 5 y ya se está implementando de forma nativa en los navegadores.

Function.prototype.bind = function() { var __method = this, args = Array.prototype.slice.call(arguments), object = args.shift(); return function() { var local_args = args.concat(Array.prototype.slice.call(arguments)); if (this !== window) local_args.push(this); return __method.apply(object, local_args); } }


Relleno de cadena:

String.prototype.padLeft = function (length, character) { return new Array(length - this.length + 1).join(character || '' '') + this; } ''trial''.padLeft(7, ''X''); // output : ''XXtrial'' ''trial''.padLeft(7); // output : '' trial'' String.prototype.padRight = function (length, character) { return this + new Array(length - this.length + 1).join(character || '' ''); } ''trial''.padRight(7, ''X''); // output : ''trialXX'' ''trial''.padRight(7); // output : ''trial ''


// This replaces all instances of ''from'' to ''to'' even when // ''from'' and ''to'' are similar (i.e .replaceAll(''a'', ''a '')) String.prototype.replaceAll = function(from, to) { var k = this; var i = 0; var j = from.length; var l = to.length; while (i <= k.length) if (k.substring(i, i + j) == from) { k = k.substring(0, i) + k.substring(i).replace(from, to); i += l; } else i++; return k; };


// left trim String.prototype.ltrim = function () { return this.replace(/^/s+/, ''''); } // right trim String.prototype.rtrim = function () { return this.replace(//s+$/, ''''); } // left and right trim String.prototype.trim = function () { return this.ltrim().rtrim(); }


Array.prototype.indexOf = Array.prototype.indexOf || function (item) { for (var i=0; i < this.length; i++) { if(this[i] === item) return i; } return -1; };

Uso:

var list = ["my", "array", "contents"]; alert(list.indexOf("contents")); // outputs 2