原型,构造函数,实例

单从实际应用上做理解,某个项目我需要写一个构造函数

dogs就是构造函数,同时也是一个函数,也是一个对象,name和color就是这个对象的属性

我需要用到这个构造函数了,生成了两个实例

dog1,dog2就是构造函数dogs的实例
从控制台打印可以看到,实例自然拥有了构造函数的属性(哪怕不传值,属性依然在,只是对应的值为undefined)

如果此时我需要构造函数里面有公共的方法

给构造函数添加了方法run

实例自然也拥有了对应的方法,运行实例的run方法

控制台打印出‘ 飞快的跑了1米‘  

那么什么是原型?在说这个之前,在控制台打印一下

得到了false结果,也就是说我们每个实例调用原型的方法,都会生成一个新的方法。占用内存

构造函数的prototype属性就是它的原型,只有构造函数才拥有prototype属性,我可以在构造函数的原型上添加方法,构造函数的实例同样可以访问到这个新方法

调用结果‘响亮的叫了2声’

在控制台打印出实例dog1

可以看到,run方法直接在dogs方法中,而bark方法却在dogs的__proto__属性下

构造函数的.prototype===实例的.__proto__===构造函数的原型,通过构造函数new出来的实例却和构造函数本身没什么关系了。

两个不同实例的bark函数都是从构造函数的原型继承而来,是同一个函数,不多占用内存

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容