Navigation et outils annexes

Fil d'Ariane

Eloquent JavaScript

Liens utiles

Objets

delete obj["key"] similaire à obj["key"]=undefined mais "key" ne sera plus dans les propriétés renvoyées par Object.keys(obj) Object.assign(obj1,obj2) copie propriétés de obj2 vers obj1 (écrase, penser à obj1=obj2)

Object.prototype
L'ancètre de tous les objets (racine absolue)
Object.create(obj)
Crée un objet de même prototype que obj. Si obj=null, objet sans prototype
Object.keys(obj)
Ne renvoie que les clés propres (pas celles héritées)
obj.hasOwnProperty(key)
true que pour les clés propres (pas celles héritées)
Array.prototype
L'ancètre de tous les tableaux
Function.prototype
L'ancètre de toutes les fonctions
Object.getPrototypeOf(obj)
Ancêtre direct de obj
obj.toString()
tous les objets (et donc tableaux et fonctions) ont cette méthode car dans Object.prototype
foo.call(obj,arg1,arg2)
Appelle obj.foo(arg1,arg2) (même si foo n'est pas méthode de obj)

Classes

class
class Lapin {constructor(type){this.type=type}}
function
function Lapin {this.type=type}
instanciation
gaston = new Lapin('gris') //inchangé
méthodes
la classe est une suite de méthodes en vrac: methode(arg){}

Tableaux

push
ajoute à la fin,
pop
retire à la fin.
unshift
ajoute au début
shift
retire au début.
indexOf et lastIndexOf
fonctionnent aussi pour tableaux!
for (let couleur of couleurs) console.log(couleur);
Parcours d'un tableau sans besoin indice
mergeResult = [...array1, ...array2]
fusion de deux tableaux. On peut aussi faire array1.push(...array2);
mergeResult = array1.concat(array2);
ancienne façon. Ou mergeResult = [].concat(array1, array2)
couleurs=["jaune","rouge","bleu"]


events.includes(event)) //permet de savoir si valeur contenue dans tableau

Voir fonctions de haut-niveau




// Ancienne notation
Rabbit=function(type){
this.type=type;
this.speak=function(message){
afficher("le lapin "+this.type+" a dit: <strong>"+message+"</strong>",true,true)
}
this.toString=function(){ return "un lapin "+this.type}
this.hasard="attributs dynamiques ne marche qu'avec 'class'"
}
// Nouvelle notation
class Lapin
{
constructor(type){ // pas de mot clé "function", mot clé constructor
this.type=type;
}
speak(message){ // pas de mot clé "function" pour méthodes
afficher("le lapin "+this.type+" a dit: <strong>"+message+"</strong>",true,true)
}
toString(){ return "un lapin "+this.type}
get hasard() { return Math.floor(Math.random()*10)+1} //getter = pseudo attribut
}

f=function(message){alert(message+' a='+this.a)} // Call appelle f comme une méthode de l'objet passé en paramètre 1

class LapinGris extends Lapin {
constructor () {
super("gris");
}
}

//f.call({a:12},"test")

//gaston=new Rabbit('gris'); //function
//gaston=new Lapin('gris'); //class
gaston=new LapinGris(); //class