0
votes

Sortie JavaScript en programme mathématique

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2;
  },
  perimeter: () => 2 * Math.PI * this.radius
};

console.log(shape.diameter());
console.log(shape.perimeter());


1 commentaires

3 Réponses :


2
votes

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


2 commentaires

Lorsqu'il est utilisé dans une fonction de flèche ( () => ... ), la portée de ceci est la même portée que lorsque la fonction est définie. Dans ce cas, il est fenêtre .


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.



0
votes

Selon la manière dont vous envisagez de l'utiliser, vous pouvez être mieux servi avec une classe code>. Dans l'exemple ci-dessous, ceci code> dans la fonction de flèche fait référence à l'instance Circle code>.

p>

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());


0 commentaires

0
votes

Bonjour périmètre en fonction de la fonction de flèche non utilisée (() =>)

périmètre () { Retour 2 * math.pi * this.radius}


0 commentaires