我有以下 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 的语句中,可以在jack实例的原型中找到age属性。打印0是合理的。
在声明jack.setAge(25); , 执行代码时this.age = age; ,似乎在jack实例中添加了一个新属性。我很困惑为什么不是函数jack.setAge(25); 将值分配给Person.prototype.age?
谢谢,
杰弗里