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 的时候对值类型复制了吗?可是我翻了下没这描述。。。。。求解答
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.