function Super() {
this.val = 1;
this.arr = [1];
}
function Sub() {...}
Sub.prototype = new Super();
var sub1 = new Sub();
var sub2 = new Sub();
sub1.val = 2;//不会影响 sub2
sub1.arr.push(2);//会影响 sub2
上面的代码有点我无法理解,想请教下!!!
先讲下我的理解:
new Super后,导致Sub.prototype通过call得到了val和arr。
new Sub后的实质变化也只是sub1的__proto__指向了Sub.prototype
也就是说,sub1.val,sub1.arr这都是访问Sub.prototype上的。
这特么访问就都是一个链上的东西了。
为何sub1.arr能影响,而sub1.val却不影响呢?
不能因为一个是值类型,一个是引用类型就有区别吧!!!!
是 new 的时候对值类型复制了吗?可是我翻了下没这描述。。。。。求解答
