技能测试:面向对象的 JavaScript

本次技能测试旨在帮助您评估是否理解了我们的 JavaScript 中的类 文章。

注意: 如需帮助,请阅读我们的“技能测试”使用指南。您也可以通过我们的沟通渠道与我们联系。

OOJS 1

在此任务中,我们为您提供了一个 Shape 类的定义起始。它有三个属性:namesidessideLength。此类仅模拟所有边长都相同的形状,例如正方形或等边三角形。

完成任务

  1. 为此类添加一个构造函数。构造函数接收 namesidessideLength 属性的参数,并初始化它们。
  2. 向类添加一个新的 calcPerimeter() 方法,该方法计算其周长(形状外边缘的长度)并将结果记录到控制台。
  3. 创建一个名为 squareShape 类的新实例。为其 name 属性赋值为 squaresides 属性赋值为 4sideLength 属性赋值为 5
  4. 调用实例上的 calcPerimeter() 方法,以查看它是否按预期将计算结果记录到浏览器的控制台中。
  5. 创建一个名为 triangleShape 类的新实例,其 name 属性赋值为 trianglesides 属性赋值为 3sideLength 属性赋值为 3
  6. 调用 triangle.calcPerimeter() 来检查它是否工作正常。
js
class Shape {
  name;
  sides;
  sideLength;
}
点击此处显示解决方案

您完成的 JS 可能看起来像这样

js
class Shape {
  name;
  sides;
  sideLength;

  constructor(name, sides, sideLength) {
    this.name = name;
    this.sides = sides;
    this.sideLength = sideLength;
  }

  calcPerimeter() {
    console.log(
      `The ${this.name}'s perimeter length is ${this.sides * this.sideLength}.`,
    );
  }
}

const square = new Shape("square", 4, 5);
square.calcPerimeter();

const triangle = new Shape("triangle", 3, 3);
triangle.calcPerimeter();

OOJS 2

现在是时候加入一些继承了。

完成任务

  1. 创建一个继承自 ShapeSquare 类。
  2. Square 添加一个 calcArea() 方法,用于计算其面积。
  3. 设置 Square 构造函数,以便 Square 对象实例的 name 属性自动设置为 squaresides 属性自动设置为 4。因此,在调用构造函数时,您只需要提供 sideLength 属性。
  4. 创建一个名为 squareSquare 类实例,并设置合适的属性值,然后调用其 calcPerimeter()calcArea() 方法,以显示它工作正常。
js
class Shape {
  name;
  sides;
  sideLength;

  constructor(name, sides, sideLength) {
    this.name = name;
    this.sides = sides;
    this.sideLength = sideLength;
  }

  calcPerimeter() {
    console.log(
      `The ${this.name}'s perimeter length is ${this.sides * this.sideLength}.`,
    );
  }
}

// Don't edit the code above here!

// Add your code here
点击此处显示解决方案

您完成的 JS 可能看起来像这样

js
// ...
// Don't edit the code above here!

class Square extends Shape {
  constructor(sideLength) {
    super("square", 4, sideLength);
  }

  calcArea() {
    console.log(
      `The ${this.name}'s area is ${this.sideLength * this.sideLength} squared.`,
    );
  }
}

const square = new Square(4);

square.calcPerimeter();
square.calcArea();