javascript原型—构造机制

一般当用new操作符完成对对象构造器,然后由构造器所持有的原型(对象)进行拷贝到变量对象内,但是这个操作的重点在于如何“拷贝”,从内存的角度看“拷贝”一词,或许会更清楚js的拷贝意义。
不论称之为技术或机制也好,说到底,他和C++的多态技术还是比较近的,其内部都维护一个表格。称之为虚拟继承表,(怎么称呼就是你的事了)。
回头看“拷贝”。语言的拷贝其实不外乎几点:(个人理解,其实还可以组合,但是)
1:地址拷贝,就是如同引用,占用的是“同一块”内存。
2:新建内存块,作为对象的引用,然后将目标的属性和方法都放入内存块里,占用的是两块内存,毫无瓜葛。
3:新建表格,将目标对象属性作为键—值的类似关系保存在一个表里,而新建对象持有这个表。
由以上三个方法,可以组合较多的机制,比如:写时复制---这种技术其实是对相对经常读而不经常写的环境下的快捷方式,意思是读取的时候,是对原型的直接读取,类似于地址拷贝,当写的时候,就会将引用的目标对象进行第二种方式新建内存块,从而避免写操作对原型的影响,保证原型的独立和读操作的快捷。
但是JS采用的是一种颗粒度较小、从而引进类似第三个方法的新建表格,完成拷贝技术。比如当构造函数实例化一个对象的时候,该对象会持有构造器的原型对象的引用,但是当我们新增或改变对象的属性时,就会新建一个本地表,进行键-值关联,完成写的操作,这样。好处:不需要大量的构造器新增内存块,显得经济,二可以避免对原型对象的直接破坏,
但是需要保证:读取时,该表首先会被找到
如果找不到,再去遍历原型连。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值