如下代码:
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 复制到了实例内部?
求高人指点。
