我正在尝试使用继承,但我遇到了麻烦。我遇到了错误,不知道自己在做什么错。我在网上看到的所有示例都不会将对象传递给它们的构造函数,因此我不确定应该做什么。这是一个愚蠢的例子-

function Automobile(obj){
    this.name = obj.name;
    this.model = obj.model;
}

Automobile.prototype = {
    getName: function(){
        console.log(this.name);
    },
    getModel: function(){
        console.log(this.model);
    }
}

var bmw = new Automobile({
    name: 'BMW',
    model: 'm5'
})

bmw.getName();
bmw.getModel();


function Truck(obj){
    this.cabSize = obj.cabSize
}

Truck.prototype = new Automobile();
Truck.prototype = {
    getCabSize: function(){
        console.log(this.cabSize);
    }
}

var fordF150 = new Truck({
    name: 'Ford',
    model: 'F150'
})

//Uncaught TypeError: Cannot read property 'name' of undefined test.js:2
//Automobile test.js:2
//(anonymous function)

最佳答案

错误发生在Truck.prototype = new Automobile();。您没有传递Automobile期望的obj。

为了避免这种情况,请尝试Truck.prototype = Object.create(Automobile.prototype)

在那之后使用

Truck.prototype.getCabSite = function(){
}


这样您就不会覆盖Automobile的继承属性。

关于javascript - JavaScript-继承错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25559366/

10-11 06:04