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:
- Déclaration de fonction
- Expression de fonction
- 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.
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 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.
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