如下代码:
function Boy() {};
Boy.prototype.grow = function () {
this.year++;
this.girlfriend.push('hands');
console.log(this.girlfriend);
console.log(this.year);
};
Boy.prototype.year = 18;
Boy.prototype.girlfriend = [];
var me = new Boy();
me.grow();
me.grow();
var you = new Boy();
you.grow();
输出是
[ 'hands' ]
19
[ 'hands', 'hands' ]
20
[ 'hands', 'hands', 'hands' ]
19
以下是我的心路历程:
- 简单的原型链继承会造成引用类型数据的共享,是因为这个原因吗?
- prototype 不是一个对象吗,如果 me 和 you 是指向同一个 prototype 对象的,不是应该共享 year 吗?
- 还是说 this 指针将 year 复制到了实例内部?
求高人指点。