【问题标题】:(experimenting with Javascript objects) Why is my function inside another function not working?(用 Javascript 对象进行实验)为什么我的函数在另一个函数中不起作用?
【发布时间】:2019-01-17 19:58:32
【问题描述】:

我在编码方面非常陌生。我只想知道我在这里做错了什么。当我尝试执行 car.drive() 时,即使 unlock() 函数位于原始代码中的 drive() 函数内部,它也不会运行。我不断收到“未定义解锁()”。

class Car extends drivable {
    constructor (color) {
        super(color);
    }
    
    drive() {
        super.drive();

        unlock(); {
            console.log("Car is unlocked");
        }
        
    }
    
const car = new Car("blue");

car.drive();

【问题讨论】:

  • unlock(); { 你到底想在那里做什么?语法看起来你正在尝试调用一个名为 unlock 的函数,但你没有定义这样的函数(并且你正在使用一个普通的块 { } 跟随它)
  • 注意你的代码格式。你忘了关闭你的课程。此外,解锁方法应该在类本身内部,而不是在驱动方法内部。

标签: javascript oop polymorphism


【解决方案1】:

注意“;”。你如何编写它意味着你只是调用函数,而不是定义它。

unlock() {
    console.log("Car is unlocked");
}

编辑: 对不起,我错过了一些东西:

class Car extends drivable {
    constructor(color) {
        super(color);
    }

    drive() {
        super.drive();
        this.unlock();
    }

    unlock() {
        console.log("Car is unlocked");
    }
}

【讨论】:

  • 你也错过了this.unlock() :)
【解决方案2】:

您必须在调用它之前先定义该函数。 但是你可以简单地在 drive() 函数内部调用console.log(),这在这里没有多大意义。

无论如何,可能是这样的:

drive() {
    super.drive();
    var unlock = function() {
        console.log("Car is unlocked");
    }
    unlock();
}

或者像其他答案一样立即定义和调用函数

【讨论】:

    【解决方案3】:

    应该是:

    class Car extends drivable {
        constructor (color) {
            super(color);
        }
    
        drive() {
            super.drive();        
            this.unlock();
        }
    
        unlock() {
            console.log("Car is unlocked");
        }
    }
    
    const car = new Car("blue");
    
    car.drive();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多