Diferència entre revisions de la pàgina «M06 UF1A3. Teoria»
m |
|||
| Línia 55: | Línia 55: | ||
console.log(cad.desordenar()) | console.log(cad.desordenar()) | ||
</pre> | </pre> | ||
| + | ==Propietat constructor dels objectes== | ||
| + | Si anem a la referència dels '''Strings''' (https://www.w3schools.com/jsref/jsref_obj_string.asp) veiem que hi ha tres propietats: | ||
| + | *length (la més important) | ||
| + | *prototype (ja l'he vist) | ||
| + | *constructor: per a què serveix aquesta propietat? Serveix per a accedir a la definició de la funció constructora (en format cadena). | ||
| + | Anem a veure un exemple de ''constructor'' amb un objecte genèric: | ||
| + | |||
| + | <pre> | ||
| + | function displayMoto() { | ||
| + | var result = `Una bonica ${this.make} ${this.model} del ${this.year}`; | ||
| + | return result; | ||
| + | } | ||
| + | |||
| + | function Moto(make, model, year, owner) { | ||
| + | this.make = make; | ||
| + | this.model = model; | ||
| + | this.year = year; | ||
| + | this.owner = owner; | ||
| + | this.displayMoto = displayMoto; | ||
| + | } | ||
| + | |||
| + | var moto1 = new Moto('honda','500','pep'); | ||
| + | |||
| + | console.log(moto1.constructor); //no ens mostra tota la cadena | ||
| + | [Function: Moto] | ||
| + | |||
| + | console.log('funció constructora: ' + moto1.constructor); //ho hem de fer així | ||
| + | funció constructora: function Moto(make, model, year, owner) { | ||
| + | this.make = make; | ||
| + | this.model = model; | ||
| + | this.year = year; | ||
| + | this.owner = owner; | ||
| + | this.displayMoto = displayMoto; | ||
| + | } | ||
| + | </pre> | ||
{{Autor}}, octubre 2021 | {{Autor}}, octubre 2021 | ||
Revisió del 15:49, 28 oct 2021
Contingut
Scripts de classe
- Fitxer:Curs javascript developer mozilla.zip (actualitzat 28/10/2021)
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());
Ex 2. 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())
Propietat constructor dels objectes
Si anem a la referència dels Strings (https://www.w3schools.com/jsref/jsref_obj_string.asp) veiem que hi ha tres propietats:
- length (la més important)
- prototype (ja l'he vist)
- constructor: per a què serveix aquesta propietat? Serveix per a accedir a la definició de la funció constructora (en format cadena).
Anem a veure un exemple de constructor amb un objecte genèric:
function displayMoto() {
var result = `Una bonica ${this.make} ${this.model} del ${this.year}`;
return result;
}
function Moto(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
this.displayMoto = displayMoto;
}
var moto1 = new Moto('honda','500','pep');
console.log(moto1.constructor); //no ens mostra tota la cadena
[Function: Moto]
console.log('funció constructora: ' + moto1.constructor); //ho hem de fer així
funció constructora: function Moto(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
this.displayMoto = displayMoto;
}
creat per Joan Quintana Compte, octubre 2021