gpt4 book ai didi

javascript - 在类 deceleration 之外声明的方法无法被 javascript 中的子类继承

转载 作者:行者123 更新时间:2023-12-02 21:24:22 24 4
gpt4 key购买 nike

// declared class vehicle
function Vehicle(make,model,year){
this.make=make
this.model=model
this.year=year

}
// 2 - Add a function to the Vehicle prototype called start which returns the string //"VROOM!"
Vehicle.prototype.start=function(){
return "VROOM!"
}

// declared child class car
function Car(make,model,year){
Vehicle.apply(this,arguments)
this.numWheels=4

}
// assigning the constructor
Car.prototype.constructor=Object.create(Vehicle.constructor)
// changing the pointing of constructor back to car
Car.prototype.constructor=Car;
var sedan=new Car("Tractor", "John Deere", 1999)
console.log(sedan.start())
//sedan.start() gives error but if i declare it inside vehicle class does not

最佳答案

这些代码行没有意义:

// assigning the constructor
Car.prototype.constructor=Object.create(Vehicle.constructor)
// changing the pointing of constructor back to car
Car.prototype.constructor=Car;

它们没有意义,因为向该构造函数进行赋值,然后立即进行另一个赋值意味着第一个赋值绝对不会对任何内容产生任何影响。

认为你需要的是:

// assigning the constructor
Car.prototype=Object.create(Vehicle.prototype)
// changing the pointing of constructor back to car
Car.prototype.constructor=Car;

现在,Car 原型(prototype)将引用 Vehicle 原型(prototype),因此 Car 实例将在其原型(prototype)链中同时拥有这两个原型(prototype)。

在 2020 年的现代世界中,您可以通过 class declarations. 实现这一切

关于javascript - 在类 deceleration 之外声明的方法无法被 javascript 中的子类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60774508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com