1.js的原型链,对象,构造函数之间的关系,先从练习开始
test1是函数原型,ex1,ex2则是这个函数的实例,从上述结果不难看出prototype是专属函数原型test1的属性,而_proto_则是函数实例化后ex1,ex2的属性,如果对这几个东西用图形展示的话,应该是下面这张
好,我们在了解完上述的关系后,再看一下另外的练习结果
从实例化的ex1中,再加一个子属性a(函数),它可以再用这个,而它的函数原型则不受影响,而如果在它的函数原型里面再加一个子属性b,加完之后,不仅自身会发生变化,而且之前它的实例ex1,ex2都会自动拥有这种属性,举个不恰当的例子:就是甲,有个孩子乙,甲在生下乙后,甲之前拥有的各种能力,乙会自动拥有,而乙在生下之后,再学习到的新能力,它的父亲甲就不能拥有,但是它父亲甲再学习到的能力就可以自动传给乙。
而由这个属性引申出来的优势有时对我们开发有很大帮助,虽然大多数我们不会使用函数实例,但是我们经常会给一个定义好的函数再加一个prototype.a = function(){...}什么的,方便之后的操作,如果在函数定义的时候就把a加进去,那就是javascript的闭包了。
以上就是我对这几个属性的初步理解,如果以后了解更深入了,我再补充下