次の Javascipt コードがあります。
var Person = function(){};
Person.prototype.age = 0;
Person.prototype.setAge = function(age) {
this.age = age;
};
var jack = new Person();
console.log(jack.age); // #1
jack.setAge(25); // Why not this function assign the value to Person.prototype.age.
console.log(jack.age); // #2
console.log(jack);
コードを実行した後、次のような出力が得られました。
0
25
Person {age: 25, age: 0, setAge: function}
age: 25
__proto__: Object
age: 0
constructor: function (){}
setAge: function (age) {
__proto__: Object
#1 というラベルの付いたステートメントで、ageプロパティがjackインスタンスのプロトタイプにあります。0を出力するのが合理的です。
jack.setAge(25);ステートメントで 、コードthis.age = age;を実行すると、、jackインスタンスに新しいプロパティが追加されたようです。関数jack.setAge(25);ではない理由がわかりません。Person.prototype.ageに値を割り当てますか?
ありがとう、
ジェフリー