最近,在做项目的时候,发现还需要去夯实一下js的基础,所以利用晚上下班和周末的时间把js系统的梳理一遍,然后就到了原型这块,学js的时候,有人说,js有三座大山,跨过去后,js就算是会了,这三座大山分别是:原型,ajax,this。
今天这篇就是讲一下原型,然后文章来源有mdn文档,以及一些比较专业的书籍。
1.原型的概念:
原型的定义:XXX.prototype存储了XXX对象的共同属性。
什么是原型: JS中每个对象都有又给隐藏属性,这个隐藏属性存储着其共有属性组成的对象的地址,这个共有属性组成的对象叫做原型。(下图中的地址#409所指向的内存就是原型)
原型可以不需要重复复制就能拥有共同属性
每个对象都拥有一个隐藏属性__proto__,指向原型
大写开头的Object关心prototype 小写开头obj = {},才关心 隐藏属性__proto__
prototype
和 __proto__
的 区别:
都存着原型的地址,
prototype挂在函数上,而__proto__挂在新生成的对象上。
看图一即可知道。