我创建了两个对象:
- 哺乳动物
- 猫
猫延伸了哺乳动物。这两个对象都有构造函数,它接受一个名为 config 的参数。我试图在 Cat 的构造函数中覆盖 Mammals 构造函数,但我得到了奇怪的结果:
function Mammal(config) {
this.config = config;
console.log(this.config);
}
function Cat(config) {
// call parent constructor
Mammal.call(this, config);
}
Cat.prototype = new Mammal();
var felix = new Cat({
"name": "Felix"
});
这将在控制台中打印:
undefined fiddle.jshell.net/_display/:23
Object {name: "Felix"}
为什么父构造函数被调用两次?为什么,当它第一次被调用时,this.config 是未定义的?我正在分配财产。你能帮我修复这段代码吗?