Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从其他对象继承-继承默认值时出现问题_Javascript_Object - Fatal编程技术网

Javascript 从其他对象继承-继承默认值时出现问题

Javascript 从其他对象继承-继承默认值时出现问题,javascript,object,Javascript,Object,我必须创建两个构造函数,其中Animal是从构造函数继承的构造函数。饥饿值必须为默认值=5。我有一个饥饿的问题-若我创造一个新的动物…它每次得到饥饿=5,即使我写了9。 默认情况下,动物的类型必须是“动物” 我的代码: function Constructor(firstName,lastName,age,type,hunger=5) { if (hunger >10) { return new Error("too much hunger")

我必须创建两个构造函数,其中Animal是从构造函数继承的构造函数。饥饿值必须为默认值=5。我有一个饥饿的问题-若我创造一个新的动物…它每次得到饥饿=5,即使我写了9。 默认情况下,动物的类型必须是
“动物”

我的代码:

function Constructor(firstName,lastName,age,type,hunger=5) {
    if (hunger >10) {
        return new Error("too much hunger")
    }
    else {
        this.firstName = firstName
        this.lastName = lastName
        this.age=age
        this.type=type
        this.hunger = hunger
    }
}

function Animal(firstName,lastName,age,hunger) {
    Constructor.call(this,firstName,lastName,age,hunger)
    this.type = "animal"
}
Animal.prototype = Object.create(Constructor.prototype)
Animal.prototype.constructor = Animal

const animal = new Animal("cat", "big cat", 10, 9)
console.log(animal)

type
作为参数传递-
Constructor
接受5个参数,而不是4类型不是问题,问题实际上是饥饿,它总是5。类型必须始终为“动物”,而不是默认值是的,我知道问题在于
饥饿
。这是因为您没有将
type
作为参数传递。通过
构造函数
它期望的5个参数,它会工作的,谢谢-我是否能够消除
类型
?我不想把任何东西都写成
类型
。现在我可以写一个数字作为一个类型,它仍然是“动物”,但我不想在创建对象时用“类型”写任何东西。还有一件事-在
animal
中,饥饿的默认值现在不起作用,所以如果我不在
hunger
中写任何东西,它不是5,它是未定义的。