原型:
原型就是具有公共属性和方法的对象。
原型的作用其实就是为类(函数)提供了一个【公共区域】,在这个公共区域中声明的属性和方法能够被所有通过这个类所创建的对象所访问到。减少内存消耗。
· 原型作用之一:数据共享,节省内存空间
· 原型作用之二:为了实现继承
ps:在原型中声明的属性和方法,有时也被称为是类的公有属性和公有方法
原型是一个对象,在原型中通常拥有两个属性:
(1)构造器constructor:该属性指向了这个类(函数)本身
(2)原型指向__proto__:该属性指向原型本身,提供给通过类创建的对象使用。
原型分为隐形原型和显示原型
所有引用类型(函数,数组,对象)的实例对象都拥有__proto__属性(隐式原型)
所有函数都拥有prototype属性(显式原型)(仅限函数)
也就是说每个函数都有一个prototype属性,每个对象都有一个__proto__属性。
原型链:
作用: 原型链用于查找对象的属性。
原型链是什么: 实例对象上都会有一个隐式原型属性(__proto__),它指向的就是原型对象,而原型对象也有__proto__属性指向它的原型对象。
为什么__proto__指向的是原型对象?
构造函数对象上有显示原型属性(prototype),它指向的就是原型对象。
实例对象的__proto__属性被赋值为构造函数的prototype属性值。