【问题标题】:Creating a class in JS OOP在 JS OOP 中创建一个类
【发布时间】:2021-09-21 03:00:52
【问题描述】:

你能帮我解决这个问题吗?我开始用 OOP 学习 Js,但我有点坚持,我在哪里犯了错误。这是我必须弄清楚的任务

创建一个 Car 类,其属性包含多个门和一个将门数打印到控制台的方法。

class Car { 
    constructor(doors){
     this.doors=doors
     console.log(doors)
    }
}

【问题讨论】:

标签: javascript class oop


【解决方案1】:

您需要在 Car 类中创建一个方法来打印门的数量,然后您需要用给定的门数来实例化该类,然后在其上调用该方法。

class Car { 
    constructor(doors){
     this.doors = doors;
    }
    print(){
        console.log(this.doors);
    }
}

const bmw = new Car(4);
bmw.print()

【讨论】:

  • 所以在这种情况下我总是需要某种方法打印方法来显示汽车
  • 是的。这正是您所要求的:one method that prints the number of doors to the console
  • @whatever 是您问题中的要求以及一种打印控制台门数的方法。
  • 方法名无所谓吧?
  • @whatever bmw 是实例。您也可以创建其他实例并使用任意数量的门启动它们。例如:const Ferrari = new Car(2)
【解决方案2】:

嘿?

是的,没问题:)

class Car {
    constructor(doors) {
        this.doors = doors;
    }

    printDoors() {
        console.log(this.doors);
    }
}

在 JS OOP 中,您必须使用 this 关键字在构造函数中定义成员变量。 要访问类中其他地方的变量,您还必须使用 `this。

printDoor() 函数必须自己定义,以便稍后调用它,如下所示:

const numberDoors = 4;
const myCar = new Car(numberDoors);
myCar.printDoors();
// expected output: 4

【讨论】:

  • 请修正您的术语。这些不是全局变量,它们是实例变量。它们不是全球性的。否则你的答案是可靠的
  • const numberDoors = 4; const myCar = new Car(numberDoors); myCar.printDoors(); 是一个实例吗?
  • @AluanHaddad 是的,您在技术上是正确的,但我经历过大多数人在不知道我在说什么时会感到困惑(根据我的经验),每个人都明白全球意味着“全球”班内。 (或者更精确的类的实例)因此,在帮助他人的同时,我经常降低精确度以使其更易于理解。
  • @whatever 'myCar' 是 'Car' 类的一个实例,而 'numberDoors' 只代表一个变量。您也可以删除“numberDoors”并像我们之前看到的那样写成“const myCar = new Car(4)”:)“myCar.printDoors()”用于调用“myCar”的“printDoor”函数' 我们在之前的行中创建的实例 :)
  • 我很欣赏你的意图,但是通过使用“全球”,你制造的混乱比你减轻的要多。 JavaScript 程序员需要了解什么是全局变量。只需将它们称为成员变量或属性或其他任何没有错误和矛盾的东西。
猜你喜欢
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多