2

我有以下

function mild_bird(){
    this.name = "catherine";
    this.origin = "st petersburg";
    this.location = "brighton beach";
}

mild_bird.prototype.get_info = function(){
    return "poo" + ", " + "pee";
}

function wild_bird(nickname){
    this.nickname = nickname;
    //anyway to reference parameters in mild_bird constructor's?
    this.name = mild_bird.prototype.name;
    this.origin = mild_bird.prototype.origin;
    this.location = mild_bird.prototype.location;
}

wild_bird.prototype = new mild_bird();
wild_bird.prototype.constructor = wild_bird;

var the_wild_bird = new wild_bird("sandy");
alert(the_wild_bird.name);

最后一行的警报返回未定义。我希望它返回“凯瑟琳”。是否可以将mild_bird 的构造函数中的属性传递给wild_bird 的构造函数?

4

2 回答 2

1

您必须在子构造函数中调用父构造函数。使用.call(this)确保您将上下文设置为由子构造函数创建的对象。

function wild_bird(nickname){
    mild_bird.call(this);
    this.nickname = nickname;
}
于 2013-08-17T21:16:54.520 回答
0

离开你的问题:

在 JavaScript 中的子构造函数中引用父构造函数属性

阅读John Resig 的简单继承模型- 这应该为您解决问题。

于 2013-08-17T21:05:23.110 回答