JS中的构造函数和原型属性

时间:2015-03-29 21:49:49

标签: javascript

我在JS中找出原型,我不能为我的生活找到原因,为什么这不起作用:

var Mammal = {
    legs: 4
}

function Dog(color, soundItMakes) {
    this.prototype = Mammal;
    this.color = color;
    this.soundItMakes = soundItMakes;
    this.woof = function() { return this.soundItMakes; }
}

aDog = new Dog("brown", "beep beep!");
document.write(Mammal.legs + "<br>");
document.write(aDog.color + "<br>" + aDog.woof() + "<br>" + aDog.legs);

第一个document.write()按预期返回4,但第二个返回未定义的aDog.legs。任何建议都将是一个巨大的帮助。

1 个答案:

答案 0 :(得分:1)

现在prototypeDog实例对象的自有属性。因此,如果您希望可以像aDog.prototype.legs那样访问它。但是,这与设置Dog 构造函数原型不同。

您的代码应为:

var Mammal = {
    legs: 4
}

function Dog(color, soundItMakes) {
    this.color = color;
    this.soundItMakes = soundItMakes;
    this.woof = function() { return this.soundItMakes; }
}

Dog.prototype = Mammal;