const shape = { radius: 10, diameter() { return this.radius * 2; }, perimeter: () => 2 * Math.PI * this.radius }; console.log(shape.diameter()); console.log(shape.perimeter());
3 Réponses :
Ceci est un problème d'étendue - la variable de rayon n'est pas disponible à l'intérieur de la méthode du périmètre et est indéfinie. Changer la fonction sur une méthode régulière résout le problème.
p>
const shape = { radius: 10, diameter() { return this.radius * 2; }, perimeter() { return 2 * Math.PI * this.radius } }; console.log(shape.diameter()); //gives 20 console.log(shape.perimeter()); // gives 62.83185307179586
Lorsqu'il est utilisé dans une fonction de flèche ( () => ... code>), la portée de
ceci code> est la même portée que lorsque la fonction est définie. Dans ce cas, il est
fenêtre code>.
Merci @soc - Cela signifie que pour avoir accès à la variable rayon - il aurait besoin d'être dans la portée globale et en dehors de l'objet de forme.
Selon la manière dont vous envisagez de l'utiliser, vous pouvez être mieux servi avec une classe p> code>. Dans l'exemple ci-dessous,
ceci code> dans la fonction de flèche fait référence à l'instance
Circle code>.
class Circle {
constructor(radius) {
this.radius = radius;
}
diameter() {
return this.radius * 2;
}
perimeter = () => 2 * Math.PI * this.radius;
}
const shape = new Circle(10);
console.log(shape.diameter());
console.log(shape.perimeter());
Bonjour périmètre en fonction de la fonction de flèche non utilisée (() =>) p>
périmètre () { Retour 2 * math.pi * this.radius} p> blockQuote>
Est-ce que cela répond à votre question? sont «Fonctions de flèche» et «Fonctions» équivalente / échangeable?