当我将参数设置为对象时,JavaScript返回TypeError

JavaScript returns TypeError when I set the arguments as objects

本文关键字:JavaScript 返回 TypeError 对象 参数 设置      更新时间:2023-09-26

我想在JavaScript中测试继承。我制作了一个示例脚本,但它不起作用。程序返回TypeError。

var Mammal = function(spec) {
    this.name = spec.name;
};
Mammal.prototype.get_name = function() {
    return this.name;
};
var Cat = function(spec) {
    this.name = spec.name;
};  
Cat.prototype = new Mammal();
var cat = new Cat({name: 'Mike'});
console.log(cat.get_name());

如果我将Mammal和Animal函数的参数设置为非对象,则程序运行良好。

错误来自以下行:

Cat.prototype = new Mammal();

Mammal构造函数需要一个具有name属性的对象。你可以做:

Cat.prototype = new Mammal({name: null});

或者更好:

Cat.prototype = Object.create(Mammal.prototype);