原型prototype
将函数定义在全局作用域中的缺点:
1.会污染全局作用域的命名空间,如:函数functionA(),那么在全局作用域中就不能再出现functionA这个命名了。
2.定义在全局作用域中不安全。
因此,就用到了主角----原型
1.所有的函数都有原型对象
2.当函数以构造函数的形式调用时,它所创建的对象中都会有一个隐含的属性__prototype__,来指向该函数的原型对象。
例:
3.原型对象相当于一个公共区域(变向的全局作用域),所有同一个类的实例都可以访问到这个原型对象,
这样我们就可以将对象共有的内容,属性,方法,统一设置到原型对象中。
4.原型对象也有原型对象,通过__proto__访问
5.当我们访问对象的一个属性或方法时,
它会先在对象自身中寻找,如果有则直接调用,
如果没有则会去原型对象中找,有则调用,没有则继续在原型对象中的原型对象中找,如找到则直接调用。
例子:
总结:创建构造函数时,将共有的属性和方法统一添加到啊构造函数的原型对象中,省去了为没一个对象添加的繁琐,也不会影响到全局作用域。