为什么无法从原型更改构造函数?

13 浏览
0 Comments

为什么无法从原型更改构造函数?

我有一个例子。

function Rabbit() {
    var jumps = "yes";
};
var rabbit = new Rabbit();
alert(rabbit.jumps);                    // undefined
alert(Rabbit.prototype.constructor);    // 输出函数Rabbit()的代码

我想要改变Rabbit()中的代码,使得var jumps变成公共的。我这样做:

Rabbit.prototype.constructor = function Rabbit() {
    this.jumps = "no";
};
alert(Rabbit.prototype.constructor);    // 再次输出函数Rabbit()的代码,并且加上新的this.jumps = "no";
var rabbit2 = new Rabbit();             // 使用新的构造函数创建新对象
alert(rabbit2.jumps);                   // 但是仍然输出undefined

为什么无法通过这种方式改变构造函数中的代码呢?

0