Fermer

octobre 28, 2023

Pourquoi la fonction flèche ne peut pas être utilisée pour créer un objet dans JS

Pourquoi la fonction flèche ne peut pas être utilisée pour créer un objet dans JS


La fonction flèche JavaScript ne peut pas être utilisée pour créer un objet. Dans cet article, nous découvrirons la raison derrière cela.

Une fonction fléchée ne peut pas être utilisée comme constructeur

Avant d’aller de l’avant, sachez que JavaScript dispose de trois types de fonctions. Ils sont:

  1. Déclaration de fonction
  2. Expression de fonction
  3. Fonction flèche

JavaScript vous permet de créer un objet à partir d’une expression de fonction ou d’une déclaration de fonction.

function  Product(title, price){
  this.title  =  title;
  this.price  =  price;
}

let  p1  =  new  Product("Pen",100);

console.log(p1);

Ci-dessus, l’objet p1 utilise la fonction Product comme constructeur.

console.log(p1.constructor); 

Maintenant, convertissons l’instruction de fonction Product en fonction fléchée, comme indiqué dans le bloc de code suivant :

let  Product  = (title, price) => {
  this.title  =  title;
  this.price  =  price;
}

let  p1  =  new  Product("Pen",100);

JavaScript se plaint lorsque vous utilisez la fonction Product pour créer un objet.

TypeError : le produit n'est pas un constructeur

Pour comprendre sa raison, créons deux fonctions, une comme déclaration de fonction et une autre comme fonction flèche, et imprimons le prototype propriété de ces fonctions.

function  Product(title, price){
  this.title  =  title;
  this.price  =  price;
}

console.log(Product.prototype) 

let  Productf  = (title, price) => {
  this.title  =  title;
  this.price  =  price; }

console.log(Productf.prototype); 

Comme vous le voyez, la valeur de la propriété prototype de la fonction Product (déclaration de fonction) est un objet vide. En revanche, la valeur de la propriété prototype de la fonction Productf (fonction flèche) est indéfini.

La valeur de la propriété prototype affiche une paire d'accolades pour la déclaration de fonction et l'expression de fonction.  Pour la fonction flèche, il répertorie les éléments non définis

La propriété prototype d’une fonction fléchée n’est pas définie.

Voyons ensuite pourquoi la propriété prototype d’une fonction est essentielle pour créer un objet. Ainsi, chaque fois que vous créez un objet à l’aide d’une fonction, cet objet est lié à l’objet prototype de la fonction.

function  Product(title, price){
  this.title  =  title;
  this.price  =  price;
}

let  p1  =  new  Product("Pen",100) ;
let  p2  =  new  Product("Pencil", 300);
console.log(p1.constructor.prototype  ==  p2.constructor.prototype); 

Ici, les objets p1 et p2 sont créés à partir de la fonction Produit et sont liés à l’objet prototype du Produit.

Dans un diagramme, le prototype de produit est un parent de P1 et P2

Tous les objets créés à partir d’une fonction sont liés à l’objet prototype de la fonction.

Comme vous l’avez déjà vu, une fonction flèche n’a pas d’objet prototype ; il ne peut donc pas être utilisé pour créer un objet ou, en d’autres termes, ne peut pas être utilisé comme constructeur.

let  Productf  = (title, price) => {
  this.title  =  title;
  this.price  =  price;
}

console.log(Productf.prototype); 

Une fonction flèche :

  • N’a pas la propriété prototype
  • N’a pas non plus l’interne [[Constructor]] propriété

Pour les deux raisons ci-dessus, une fonction fléchée ne peut pas créer d’objet en JavaScript. J’espère que vous trouverez cet article utile. Merci d’avoir lu.




Source link