M06 UF1A3. Teoria

De wikijoan
Salta a la navegació Salta a la cerca

T11. Treballar amb objectes

T12. Repàs de prototype

prototype és una propietat dels objectes String, Number, Date, Array, RegExp,... que ens permet definir un nou mètode a aquests objectes.

Ex 1. L'objecte Array no té un mètode per fer shuffle (desordenar). Tenim la següent funció que fa la feina:

function shuffle(array) {
  let currentIndex = array.length,  randomIndex;

  // While there remain elements to shuffle...
  while (currentIndex != 0) {

    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;

    // And swap it with the current element.
    [array[currentIndex], array[randomIndex]] = [
      array[randomIndex], array[currentIndex]];
  }

  return array;
}

// Used like so
var arr = [2, 11, 37, 42];
shuffle(arr);
console.log(arr);

A partir d'aquesta funció, creem el mètode desordenar() dels Array.

Array.prototype.desordenar = function() { return shuffle(this) }

Comprovem que funciona:

var arr = ['a','b','c','d'];
console.log(arr.desordenar());

Ara que ja sabem desordenar arrays, ara desordenarem strings, aprofitant que ja sabem desordenar arrays:

String.prototype.desordenar = function() {
	var arr=this.split("");
	arr.desordenar();
	return arr.join("");
}

Per exemple, anem a crear el mètode desordenar() que desordeni els caràcters d'una cadena, de forma aleatòria

var cad = "supercalifragilisticoespialidoso";

console.log(cad.desordenar())

creat per Joan Quintana Compte, octubre 2021