Documente Academic
Documente Profesional
Documente Cultură
Définition :
Préambule :
Qu’est ce qui est l’autre : est-ce l’Array qui est un objet ou un objet qui est une
Array ? Voyez ceci : les éléments (values) d’un objet sont accédés comme ceux
d’une Array, et les Arrays possèdent implicitement en interne des labels (keys)
que nous verrons un peu plus loin :
Les éléments de l’Array d’origine tous ont été jetées dans le prototype du cons-
tructeur du nouvel objet créé !.
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
Et le prototype du parent (constructeur) du prototype du constructeur de ce
nouvel objet créé « est une … Array.
Nous avons donc créé un « object » à partir d’une « Array » et c’est exacte-
ment ce que le petit code de notre programme a demandé !
Notre nouvel « objet » ici descend donc d’une Array, il est donc bel et bien une
« Array » !
Un autre exemple :
0 femme test.html:4:3
1 homme test.html:4:3
Property keys are used to access properties and their values. There
are two kinds of access for properties: get and set, corresponding to
value retrieval and assignment, respectively. The properties acces-
sible via get and set access includes both own properties that are a
direct part of an object and inherited properties which are provided
by another associated object via a property inheritance relationship.
Inherited properties may be either own or inherited properties of
the associated object. Each own property of an object must each
have a key value that is distinct from the key values of the other own
properties of that object.
All objects are logically collections of properties, but there are mul-
tiple forms of objects that differ in their semantics for accessing and
manipulating their properties. Ordinary objects are the most com-
mon form of objects and have the default object semantics. An exotic
object is any form of object whose property semantics differ in any
way from the default semantics.
2. 4.3.7 exotic object : object that does not have the default be-
haviour for one or more of the essential internal methods.
Mais aussi il y a
Les OBJETS en JS :
TYPES SIMPLES en JS :
NOTE :
Math et Error.
1. Création d’objet-fonction :
Un constructeur est une fonction comme les autres mais qui permet avec
l’opérateur new la création ET l’initialisation simultanée de toutes ou
quelques propriétés du nouvel objet créé (Réciproquement une fonction
est un objet comme les autres).
console.log("o.nom = ",o.nom);
console.log("o.age = ",o.age);
// console.log("o.matr = ",o.matr());
// TypeError: o.matr is not a function
</script>
// console.log("i.auj = ",i.auj());
// TypeError: i.auj is not a function
</script>
En mode standard :
<script type="text/javascript">
function f() {
g = 1000;
var v = 5;
let l = 50;
Bref aperçu sur les objets 10 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
const c = 100;
this.local = "LOCAL";
}
f();
console.log("g = " , g);
console.log("local = " , local);
console.log("v = " , v);
console.log("l = " , l);
console.log("c = " , c);
</script>
En mode strict :
f();
console.log("v = " , v);
console.log("l = " , l);
console.log("c = " , c);
</script>
<script type="text/javascript">
Exécution :
Window file:///K:/DADET/PROGS/test.html
Window
dObj: function dObj()
[default properties]
__proto__: WindowPrototype { … }
<script type="text/javascript">
"use strict";
Exécution :
undefined test.html:5:5
<script type="text/javascript">
"use strict";
Exécution :
Object { }
{}
__proto__: {…}
constructor: function dObj()
__proto__: Object { … }
<script type="text/javascript">
console.log(this);
console.log("==> This ds Espace Global = ");
<body>
<input type="button"
onkeyup="console.log(this) ,
console.log('==> this = '+this)"
value="ivalue">
</body>
Exécution :
Window file:///H:/DADET/PROGS/this.html
==> This ds Espace Global =
==> This ds obj_Constr =
Window file:///H:/DADET/PROGS/this.html
this = [object Window]
==> This ds oConstr-objet-toString() =
Object { width: 0, length: 5, toString: toString() }
Périmètre = 5
Notez que « perim » n’est pas instance de « obj_Constr » car non créé
avec « new ».
<script type="text/javascript">
function obj_Constr(width, length) {
}
Exécution :
<script type="text/javascript">
console.log("This ds Espace Global = ");
console.log(this);
console.log("==>this = "+this);
var obj_Hash={
toString: function(width,length) {
width=5,
length=15,
console.log("this ds oConstr-objet-fSurf() = ");
console.log(this);
// console.log("==>this = " + this); //too much recursion
return width + length;
}
}
var perim = obj_Hash.toString(null,5);
console.log("Périm = "+perim)
console.log("==>this = " + this);
console.log(this);
</script>
<body>
<input type="button" onkeyup="console.log(this),
console.log('==>this = '+this)"
value="ivalue">
</body>
Exécution :
Bref aperçu sur les objets 16 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
this ds oConstr-objet-fSurf() =
Object { toString: toString() }
Périm = 20
==>this = [object Window]
Window file:///H:/DADET/PROGS/this.html
<script type="text/javascript">
f=function(p){ // Constructeur
K=1000*3600*24*365.2475; // Notez les points-
virgules.
this.nom="Object AVEC Constructor"; // Et
l’opérateur =.
this.dn=p;
this.age=(new Date()-this.dn)/K;
}
console.log("v.nom="+v.nom);
console.log("v.dn="+v.dn.toLocaleDateString());
console.log("v.age="+v.age+" ans.");
Exécution :
f.nom=undefined
f.dn=undefined
f.age=undefined ans.
v.nom=Object AVEC Constructor
v.dn=8/11/1953
v.age=64.37741110058425 ans.
==> Ajout de propriétés via prototype
f.num=undefined * v.num=0.41036
<=> Liste des propriétés de l'objet f
<=> Liste des propriétés de l'instance v
nom * Object AVEC Constructor
dn * Tue Aug 11 1953 00:00:00 GMT+0100
age * 64.37741110058425
num * 0.41035651904814957
MODIFIER LA STRUCTURE DES OBJETS APRÈS LEUR CRÉATION = Aspect dyna-
mique de JS vs autres POO (Java et C++)
==> On peut ajouter de propriétés
f.ec=Ecole * v.ec=undefined
f.rue=undefined * v.rue=Rue
*** f.ec=Ecole * v.ec=***Ecole
==> On peut retirer de propriétés
*** f.ec=undefined * v.ec=***Ecole
*** f.ec=undefined * v.ec=undefined
<=> Liste des propriétés de l'objet f
<=> Liste des propriétés de l'instance v
nom * Object AVEC Constructor
dn * Tue Aug 11 1953 00:00:00 GMT+0100
age * 64.37741110058425
rue * Rue
num * -2.7431651195920748
Object.defineProperty(o , "PI", {
value: 3.14,
Bref aperçu sur les objets 19 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
enumerable: true,
writable: false,
configurable: false
})
console.log(o.PI); // 3.14
console.log(Math.PI); // 3.141592653589793
</script>
En mode strict :
<script type="text/javascript">
"use strict";
<script type="text/javascript">
// "use strict";
{…}
couleur: "VERT"
poids: 35
toString: function Fruit/this.toString()
__proto__: Object { … }
pomme.couleur : VERT
pomme.poids : 35
Fruit/this.toString()
arguments: null
caller: null
length: 0
name: ""
prototype: Object { … }
__proto__: function ()
function Fruit/this.toString()
function toString()
toString()
length: 0
name: "toString"
__proto__: function ()
[object Object]
Note :
<script type="text/javascript">
var Fruit = function(n,s){
// Variables ordinaires
couleur= "rouge";
poids= 50;
////////
// Appel d'un objet comme fonction ORDINAIRE
Fruit(null , "ORDINAIRE");
</script>
Exécution :
Bref aperçu sur les objets 25 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
Une chaîne littérale (object literal = littéral d’objet = chaîne pour ob-
jet) = objet écrit comme valeur d’une variable en utilisant les accolades
{ et } comme délimiteurs de l’objet.
Nous voyons dans la console à partir de son prototype que son cons-
tructeur est la fonction Object() (avec O majuscule) :
1 {y: 1, z: "texte"}
A y:1
B z:"texte"
C __proto__:
I constructor:ƒ Object()
II hasOwnProperty:ƒ hasOwnProperty()
<script type="text/javascript">
var f={
// Notez les « dbl-pts » et les « virgs »
nom:"OBJET PAR ASSIGNATION D'UN LITTÉRAL",
age:(function(){ // Bloc de méthode.
var p=new Date(1953,7,11);
var K=1000*3600*24*365.2475;// Notez les « ; ».
return (new Date()-p)/K
})(), // Jamis de points-virgule d'anonyme.
vieux:{age:45} // objet comme valeur de propriété.
}
// Affichage de l'objet
console.log(f);
console.log(v);
console.log("f="+f+"\n"+"v="+v);
// HASOWNPROPERTY()
console.log("***** HASOWNPROPERTY()");
r=v.hasOwnProperty("nom")
console.log('v.hasOwnProperty("nom")'+r);
r=f.hasOwnProperty("ec")
console.log("f.hasOwnProperty('ec')"+r);
r=v.hasOwnProperty("toString")
console.log('v.hasOwnProperty("toString")'+r);
Exécution :
console.log("==========");
Object.setPrototypeOf(o2, newprotot2);
console.log(Object.getOwnPropertyNames(o2))
// Array []
console.log(o2.prototype) // Object { … }
console.log(o2.fct) // undefined
console.log("==========");
Exécution :
Crée aussi une instance unique, à l’instar d’un littéral d’objet et la créa-
tion avec new Object.
Specs.model = "Soyouz";
Specs.color = "bleu";
Specs.dispInfo = dispSpecsInfo_=> 'Fusée '+Specs.model+"
"+Specs.color;
this.color = "bleu";
<script type="text/javascript">
var v = 25;
function dObj(){
console.log(v); // v globale
console.log(window.v); // v globale.
}
Exécution :
25 test.html:6:6
25 test.html:7:6
Undefined test.html:14:2
Insiding iObj... test.html:18:11
__proto__ing iObj... test.html:23:11
prototyping dObj... test.html:34:11
<script type="text/javascript">
"Use strict";
v = 25; // Variable globale.
Exécution :
25
<script type="text/javascript">
"use strict";
var v = 25;
Exécution :
Insiding... test.html:8:12
100 test.html:10:7
25 test.html:11:7
TypeError: iObj is undefined test.html:19:2
<script type="text/javascript">
"use strict";
var v = 25;
// instanciations
var iObj1 = new dObj();
var iObj2 = new dObj();
Exécution :
25 test.html:10:7
25 test.html:11:7
25 test.html:10:7
25 test.html:11:7
100 test.html:19:3
Insiding... test.html:8:12
In iObj1.prototype.fp() test.html:24:7
<script type="text/javascript">
function Agent(pTit){
this.titre = pTit;
// this = global (window)
}
function getName(){
console.log(this.titre);
// this réfère window.
}
// Initialise window.titre
Agent("Ekebekele");
//Affiche window.titre
getName();
Exécution :
Ekebekele this.html:8:5
Ekebekele this.html:19:1
<script type="text/javascript">
"use strict";
window.v = 25;
ou comme ceci :
<script type="text/javascript">
"use strict";
var v = 25;
<script type="text/javascript">
"use strict";
var v = 25;
function dObj(){
this.v = 100;
console.log(v); // v locale
console.log(window.v); // v globale.
}
// Ajout de méthode.
iObj.f=function f(){
console.log("Insiding...");
}
Exécution :
25
25
100
Insiding...
<script type="text/javascript">
"use strict";
pilipili.couleur = "rouge";
pilipili.prix = 2;
pilipili.descr=function(){
return this.couleur+" = "+this.prix+" USD"
}
console.log(Object.values(pilipili));
console.log(pilipili.descr());
console.log(Object.values(
["texte", 5, {}, _=>{}])
);
// Et aussi ceci :
console.log(Object.entries("pili^2"));
</script>
// Ctéation d'instances :
let Pierre = Object.create (Yeux);
let Louis = Object.create (Yeux);
console.log(Pierre.oeil.couleur); // bleu
console.log(Louis.oeil.couleur); // bleu
console.log(Pierre.oeil.diamètre); // 25 mm
console.log(Louis.oeil.diamètre); // 25 mm
console.log(Pierre.oeil.couleur); // bleu
console.log(Louis.oeil.couleur); // bleu
console.log(Pierre.oeil.diamètre); // 30 mm
console.log(Louis.oeil.diamètre); // 30 mm
Louis.oeil={
couleur : "marron",
diamètre : "30 mm"
}
console.log(Pierre.oeil.couleur); // bleu
console.log(Louis.oeil.couleur); // marron
console.log(Pierre.oeil.diamètre); // 30 mm
console.log(Louis.oeil.diamètre); // 30 mm
</script>
if (!Object.create) {
Object.create = (function(o) {
function F(){};
return function(o) {
if(arguments.length != 1) {
throw new Error(’Objet.create implementation ’+
’only accepts one parameter.’);
}
F.prototype o;
return new F();
}
})();
}
Explications et démonstration :
//===========================================
// Définitio d'une méthode create pour Objet,
// parent de tous les autres objets.
Object.create = (function(o) {
console.log("***** HIC *****");
// Juste pour nous assurer que
// cette nouvelle définition exécute bel et bien,
// nous lui avons collé cet « alert » bidon.
function F(){};
return function(o) {
if(arguments.length != 1) {
throw new Error('Objet.create implementation
'+
'only accepts one parameter.');
}
F.prototype = o;
// La fonction/objet F() a maintenant un
// prototype, la foncton passée en argument
// au moment de l'appel à la
// méthode « Object.create() ».
let Yeux = {
oeil:{
couleur:"bleu",
diametre:"25 mm"
}
}
console.dir(Yeux);
// Object { oeil: {…} } test.html:78:1
//
// {…}
// oeil: Object { couleur: "bleu", diametre: "25 mm" }
// <prototype>: Object { … } test.html:78:1
console.dir(nOb);
// Object { } test.html:84:1
// {}
// <prototype>: Object { oeil: {…} } test.html:84:1
//
// {}
// <prototype>: {…}
// oeil: Object { couleur: "bleu", diametre: "25 mm" }
// <prototype>: Object { … } test.html:84:1
</script>
Remarque :
console.log(i)
// Object { } test.html:4:4
// {} test.html:4:4
// <prototype>: function f()
// <prototype>: f()
// length: 0
// name: "f"
// prototype: {…}
// constructor: function f()
// <prototype>: Object { … }
// <prototype>: function ()
console.log(i.prototype)
// Object { … } test.html:5:4
// {…} test.html:5:4
// constructor: function f()
// <prototype>: Object { … }
console.log(f.isPrototypeOf(i))
// true
</script>
Exécution :
console.log(f.isPrototypeOf(i))
// true
// 1.
function Obj(oPdn , fct){
var dn = new Date(oPdn.a +","+oPdn.m +","+oPdn.j);
// objet avec « new »
cl(dn.toString()) // console.log
this.O_age.disp_age = function(p){
return (age_calc / fct()).toFixed(2)+" ans.";
};
// 2.
// HASH HASH HASH (littéral d'objet)
// objet Hash, argument vers le constructeur Obj.
// Une autre Variable ordinaire dans un objet
// 3.
// fonction cô arguments vers construct.
// lors d’instanciation
// 4.
// Création d’objet avec Object.create()
// 5.
// Faire [inter]-agir le tout
cl(i.stg , iObj.O_age.disp_age());
</script>
Exécution :
Avec Firefox :
Avec Yandex :
test.html:11
Tue Aug 11 1953 00:00:00 GMT+0100
(heure d’été d’Europe centrale)
En différé :
function dispSpecsInfo() {
return 'Fusée '+this.model+" "+this.color;
}
// Définition "externe" de la méthode
// Specs.dispSpecsInfo().
// Inconvénients :
// 1. Peut être appelé de n'importe où,
// éventuellement générant des erreurs.
// 2. Risque de conflicts avec des fonctions
// de librairies ou de redéfinition.
// 3. Bouffe de l'espace.
En ligne (inline) :
Object.defineProperties(o, {
nom : {
value:"Kingandi"
}
})
Object.defineProperties(o, {
age : {
value:2018,writable:true
console.log(Object.getOwnPropertyDescriptors(o));
console.log(o.nom, o.age);
</script>
Exécution :
● instance.propriété
● instance[indice]
● instance["propriété"]
<script type="text/javascript">
lobjet = function(){
this.prix=30;
this.couleur="rose";
this.exp=(
new Date("3030 July
17").toLocaleDateString());
this.produit = { couleur:"jaune" };
};
console.log("***11111111111***");
console.log("ist.prix="+ist.prix);
console.log("ist['prix']="+ist.prix);
var idx="prix";
console.log("ist[idx]="+ist.prix);
console.log("***22222222222***");
ist[0]=200; // n'écrase pas ist.prix
console.log("ist[0]="+ist[0]);
console.log("ist.prix="+ist.prix); // reste = 30
ist.couleur="violet";
console.log("ist.couleur="+ist.couleur);
ist["exp"]=(new Date(2030,10,25)).toLocaleString();
console.log("ist['exp']="+ist["exp"]);
ist["produit"]["couleur"] = "gris";
// TypeError: ist[3] is undefined
// con-
sole.log('ist[3]["couleur"]='+ist[3]["couleur"]);
con-
sole.log('ist.produit.couleur='+ist.produit.couleur);
console.log('ist.produit["couleur"]='+
ist.produit["couleur"]);
console.log('ist["produit"].couleur='+
ist["produit"].couleur);
console.log('ist["produit"]["couleur"]='+
ist["produit"]["couleur"]);
console.log("***33333333333***");
ist[3] = {couleur: "Magenta"}
console.log('ist[3]='+ist[3]);
console.log('ist[3]["couleur"]='+ist[3]["couleur"]);
console.log('ist[3].couleur='+ist[3].couleur);
con-
sole.log('ist.produit.couleur='+ist.produit.couleur);
console.log('ist.produit["couleur"]='+
ist.produit["couleur"]);
console.log('ist["produit"].couleur='+
ist["produit"].couleur);
console.log('ist["produit"]["couleur"]='+
ist["produit"]["couleur"]);
console.log("***55555555555***");
lobjet.nouveauP="NouveauP"
console.log('ist["nouveauP"]='+ist["nouveauP"]);
console.log('ist.nouveauP='+ist.nouveauP);
console.log("lobjet.nouveauP="+lobjet.nouveauP);
console.log("***66666666666***");
lobjet.prototype.nouveauPP="NouveauPP"
console.log('ist["nouveauPP"]='+ist["nouveauPP"]);
console.log('ist.nouveauPP='+ist.nouveauPP);
console.log("lobjet.nouveauPP="+lobjet.nouveauPP);
</script>
Exécution :
***11111111111*** test.html:12:2
ist.prix=30 test.html:13:2
ist['prix']=30 test.html:14:2
ist[idx]=30 test.html:16:2
ist.couleur=rose test.html:17:2
ist.exp=17/07/3030 test.html:18:2
ist.produit.couleur=jaune test.html:19:2
***22222222222*** test.html:21:2
ist[0]=200 test.html:23:2
ist.prix=30 test.html:24:2
ist.couleur=violet test.html:27:2
ist['exp']=25/11/2030 à 00:00:00 test.html:30:2
ist.produit.couleur=gris test.html:35:2
ist.produit["couleur"]=gris test.html:36:2
ist["produit"].couleur=gris test.html:38:2
ist["produit"]["couleur"]=gris test.html:40:2
***33333333333*** test.html:43:2
ist[3]=[object Object] test.html:45:2
ist[3]["couleur"]=Magenta test.html:46:2
Bref aperçu sur les objets 56 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
ist[3].couleur=Magenta test.html:47:2
ist.produit.couleur=gris test.html:48:2
ist.produit["couleur"]=gris test.html:49:2
ist["produit"].couleur=gris test.html:51:2
ist["produit"]["couleur"]=gris test.html:53:2
***44444444444*** test.html:58:2
ist["nouveauI"]=NouveauI test.html:60:2
ist.nouveauI=NouveauI test.html:61:2
lobjet.nouveauI=undefined test.html:62:2
***55555555555*** test.html:66:2
ist["nouveauP"]=undefined test.html:68:2
ist.nouveauP=undefined test.html:69:2
lobjet.nouveauP=NouveauP test.html:70:2
***66666666666*** test.html:74:2
ist["nouveauPP"]=NouveauPP test.html:76:2
ist.nouveauPP=NouveauPP test.html:77:2
lobjet.nouveauPP=undefined test.html:78:2
const o2 = {
labelK: "kilo",
labelF: "ignoré",
labelE: {value:3, enumerable:true},
labelF: x => x,
const o3 = {
labelK: "kilo",
labelE: {value:3, enumerable:true},
get labelG(){
const p=Math.PI, exp=2;
return Math.pow(p,exp);
}
}
const o = Object.assign(
o1, {},"1stString",'2ndString',null,true,
undefined,Symbol('z'),`LastString`,o2,o3);
console.dir(o);
</script>
var o2 = {};
// ASSIGNATION
Object.assign(o2, o1);
// transf propr de o3 à o1 + écrast éventuel
console.log("*o1 =",o1);
console.log("o2 =",o2);
o1.act();
o2.act();
var o3 = {
matr: 5000
, act2 () { return "Dans o3"; }
Object.assign(o1, o3);
// transf propr de o3 à o1 + écrast éventuel
console.log("*o1.act2() =",o1.act2());
// ALIASATION
o4.newProp2 = "__NewPropr2"
console.log("*o3 =",o3); // o3 a reçu la n prop de o4
console.log("o4 =",o4);
</script>
Dans o1 test.html:4:14
o.nv = 17;
console.log(o);
console.log(target);
target.nv = 11;
console.log(o);
console.log(target);
</script>
o.nv = 17;
console.log(o);
console.log(target);
target.nv = 11;
console.log(o);
console.log(target);
</script>
o.nv = 17;
console.log(o);
console.log(target);
target.nv = 11;
console.log(o);
console.log(target);
</script>
o1 = Object.assign(cible1, {alpha:10});
console.log(o1);
o2 = Object.create(cible2, {beta:{value:20}});
console.log(o2);
o3 = Object.assign({alpha:100});
console.log(o3);
o4 = Object.create({beta:{value:200}});
console.log(o4);
</script>
Firefox :
Yandex :
let t="";
for(let e in a) t+= e + " | ";
console.log(t);
</script>
console.log("=".repeat(35),
"\ngetOwnPropertyNames\n","=".repeat(34));
iObj.id();
console.log("Object.getOwnPropertyNames(fruit) =",
Object.getOwnPropertyNames(fruit));
console.log("Object.getOwnPropertyNames(iObj) =",
Object.getOwnPropertyNames(iObj));
console.log("=".repeat(35),
"\nObject.getOwnPropertyDescriptors\n","=".repeat(34));
console.log("Object.getOwnPropertyDescriptors(iObj2.id) =",
Object.getOwnPropertyDescriptors(iObj2.id));
console.log("=".repeat(35),
"\nObject.entries\n","=".repeat(34));
console.log("Object.entries(fruit) =",
Object.entries(fruit));
console.log("Object.keys(iObj) ",
Object.keys(iObj));
console.log("Object.values(iObj2) =",
Object.values(iObj2));
console.log(Object.values(
["texte", 5, {}, _=>{}])
Bref aperçu sur les objets 72 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
);
console.log("=".repeat(35),
"\nObject.entries with Strings\n","=".repeat(34));
// Et aussi ceci :
console.log('Object.keys("pili^2") ',
Object.keys("pili^2"));
console.log(iObj);
console.log("=".repeat(35),
"\nObject.isFrozen\n","=".repeat(34));
console.log("Object.isFrozen(iObj) = ",
Object.isFrozen(iObj));
console.log("Object.freeze(iObj) ",
Object.freeze(iObj));
console.log("Object.isFrozen(iObj) = ",
Object.isFrozen(iObj));
console.log("=".repeat(35),
"\nObject.isSealed\n","=".repeat(34));
console.log("Object.isSealed(iObj2) =",
Object.isSealed(iObj2));
console.log("Object.seal(iObj2) ",
Object.seal(iObj2));
console.log("Object.isSealed(iObj2) =",
Object.isSealed(iObj2));
Bref aperçu sur les objets 73 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
console.log("=".repeat(35),
"\nObject.isExtensible\n","=".repeat(34));
const arr=[1,2,3]
console.log("Object.isExtensible(arr) =",
Object.isExtensible(arr));
Object.preventExtensions(arr)
console.log("Object.isExtensible(arr) =",
Object.isExtensible(arr));
console.log("=".repeat(35),
"\nObject.getOwnPropertyDescriptors\n","=".repeat(34));
Object.defineProperties(
fruit,
{
prop1:{ // property_1
writable:true
},
prop2:{ // property_2
enumerable:false
}
}
)
console.log("Object.getOwnPropertyDescriptors(fruit) =",
Object.getOwnPropertyDescriptors(fruit));
</script>
Exécution :
a = Array.from(o);
console.log(a);
a.sort();
console.log(a);
let o1={};
Object.assign(o1,a);
console.log(o1);
Avec Yandex :
3. Object . seal ( o )
Object.seal(o);
delete o.date;
console.dir(o);
console.dir(o.date);
</script>
<div class="cDiv"></div>
console.dir(o);
console.dir(o.date);
d.innerHTML += `o.date = ${o.date}<br>`;
console.dir(o);
console.dir(o.date);
d.innerHTML += `o.date = ${o.date}`;
</script>
Avec Firefox l’effet de « delete » s’étend aussi en amont, avant son in-
vocation :
Avec Yandex l’effet de « delete » s’étend aussi en amont, avant son in-
vocation :
console.dir(o);
console.dir(o.date);
</script>
Object.preventExtensions(o);
o.refused="Refusé";
console.dir(o);
console.dir(o.refused);
Object.defineProperty(o,'refused2',{
value: "Alse refused" } )
// TypeError: can't define property "refused2":
// Object is not extensible
</script>
Firefox:
Yandex :
3. Object . freeze ( o )
console.dir(o.date);
// 1543657020586
Object.freeze(o);
delete o.date;
console.dir(o.date);
// 1543657114540
Bref aperçu sur les objets 82 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
o.date=new Date().getMonth();
console.dir(o.date); // 1543657114540
//
// La propriété " o.date " N'A PAS éTé MODIFIéE
// mais aucun message n'a été émis. Donc l'action
// sur laquelle on comptait a été ignorée
// sans aucun avertissement, et donc on continue à
// compter sur elle dans la suite du code !
console.dir(o);
// Object { j: 1, date: 1543657114540, date2: now() }
</script>
4. Object . isSealed ( o )
console.dir(Object.isSealed(o)); // false
Object.freeze(o);
console.dir(Object.isSealed(o)); // true
</script>
5. Object . isExtensible ( o )
console.dir(Object.isExtensible(o)); // true
Object.preventExtensions(o);
console.dir(Object.isExtensible(o)); // false
</script>
Bref aperçu sur les objets 83 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
6. Object . isFrozen ( o )
console.dir(Object.isFrozen(o)); // false
Object.freeze(o);
console.dir(Object.isFrozen(o)); // true
</script>
Object . is ( ) :
Object.setPrototypeOf(O2.prototype, O1.prototype);
Object.setPrototypeOf(O1.prototype, O2.prototype);
L’OBJECT :
En fait qu’est ce qui est l’autre ? Est-ce l’objet qui est une Array, ou une
Array qui est un objet ? L’Array est un objet certes, mais la structure interne
de l’objet est celle d’une Array.
a[0]="Dummy",a[1]="Fail",a[2]="Tercio";
o[0]="Dummy",o[1]="Fail",o[2]="Tercio";
console.log(a,o);
</script>
Par exemple, l’Array diffère de l’objet entre autres par le fait qu’elle com-
porte une propriété « length ».
a[0]="Dummy",a[1]="Fail",a[2]="Tercio";
o[0]="Dummy",o[1]="Fail",o[2]="Tercio";
console.log(Object.getOwnPropertyDescriptors(a));
console.log(Object.getOwnPropertyDescriptors(o));
</script>
Notez ci-dessus que les labels dans l’objet ont été baptisés automatiquement
et en numérique ordonné, comme dans une simple Array, et que l’Array
aussi a dans sa représentation interne des labels [numériques] ordonnés.
Voyez ceci :
a[0]="Dummy",a[1]="Fail",a[2]="Tercio";
o[0]="Dummy",o[1]="Fail",o[2]="Tercio";
console.log(Object.entries(a));
console.log(
[{a:97, b:"bimbo", c:[83, 92]}]
.flatMap(it =>
[it.c, Math.pow(it.a,2), (it.b).concat("***")]
)
);
</script>
console.log(
[{a:97, b:"bimbo", c:[83, 92]}]
.map(it =>
[it.c, Math.pow(it.a,2), (it.b).concat("***")]
)
);
</script>
L’objet Window :
=====
Document :
=====
Navigator :
Mots-clés :
diasfb@mail2world.com
Autre Lecture :
https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-La-
Creation
• https://www.scribd.com/document/377036251/Le-Dosage-Des-
Medicaments-en-Cac-Cas
• https://www.scribd.com/document/377035454/Le-Hasard-Des-
Thermometres-Non-contact-a-Infrarouge
• https://www.scribd.com/document/376222482/Petite-Introduction-
Aux-Fonctions-JavaScript
• https://www.scribd.com/document/376221919/La-Foi-en-Jesus-Christ-
Pour-Quoi-Faire
• https://www.scribd.com/document/375689778/Lacuite-visuelle-
angulaire
• https://www.scribd.com/document/375349851/La-variable-This
• https://www.scribd.com/document/375024162/Fonctions-Imbriquees-
en-JS
• https://www.scribd.com/document/374789297/Format-Interne-Des-
Objets-JavaScript
• https://www.scribd.com/document/374788758/Iterations-en-JavaScript
• https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-
de-La-Creation
• https://www.scribd.com/document/374597969/Nouvelle-Formule-d-
IMC-indice-de-doduite-Selon-Dr-Diasoluka
• https://www.scribd.com/document/373847209/Property-Descriptors
• https://www.scribd.com/document/373833282/l-Objet-Global-Window
• https://www.scribd.com/document/372665249/Javascript-Tome-II
• https://www.scribd.com/document/355291488/motilite-oculaire-2
• https://www.scribd.com/document/355291239/motilite-oculaire-I
• https://www.scribd.com/document/355290248/Script-d-Analyses-Des-
Reflexes-Pupillomoteurs
• https://www.scribd.com/document/321168468/Renseignements-Id-et-
Anthropometriques
• https://www.scribd.com/document/320856721/Emission-31-Jul-2016
• https://www.scribd.com/document/318182982/Complication-Visuelle-
du-Traitement-de-La-Malaria
• https://www.scribd.com/document/318180637/Rapport-Entre-
Oxymetrie-Et-Type-Respiration
Bref aperçu sur les objets 97 / 98 mardi, 22. janvier 2019
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-V
• https://www.scribd.com/document/315746265/Classification-Des-
Medicaments
• https://www.scribd.com/document/315745909/Incongruences-
Heresies-et-Heterodoxies-de-la-Notion-de-Laboratoire
• https://www.scribd.com/document/315745725/Rapport-Entre-
Oxymetrie-Et-Type-Respiration