私はそのような例を持っています。なぜプロトタイプからコンストラクタ関数を変更できないのですか?
function Rabbit() {
var jumps = "yes";
};
var rabbit = new Rabbit();
alert(rabbit.jumps); // undefined
alert(Rabbit.prototype.constructor); // outputs exactly the code of the function Rabbit();
私はvar jumps
が公共になるようRabbit()
にコードを変更したいです。私はこのようにします:
Rabbit.prototype.constructor = function Rabbit() {
this.jumps = "no";
};
alert(Rabbit.prototype.constructor); // again outputs the code of function Rabbit() and with new this.jumps = "no";
var rabbit2 = new Rabbit(); // create new object with new constructor
alert(rabbit2.jumps); // but still outputs undefined
このようにしてコンストラクタ関数のコードを変更できないのはなぜですか?
はあなたの第二のコードは偽、それゆえエラーに評価され、ウサギがジャンプしないと言う - 'this.jumps =「yes」を' – wheresrhys
@wheresrhysを試みるすべての非空の文字列(大きい長さすなわち文字列ゼロよりも)JavaScriptでtrueに評価されます。 – Max