(1)JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。
比如下图最下面的循环,Star构造函数拥有一个原型对象(Star.prototype),Star的实例ldh刘德华,Star的构造函数(Star.prototype)为模板,从里面继承了sing和act的属性。console.log(ldh.__proto__),输出ldh的原型,可以知道它是Star.prototype。
(2)讲第一点的时候我们说过,每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象 ∈ 对象,对象拥有原型对象 => 原型对象拥有原型对象,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。
还是上面那张图,Star这个原型,也有自己的原型模板,它是以Object为原型,继承了Object的属性和方法(明星Star属于事物Object)。
再往上推,Object这个原型的原型是null,继承null的属性和方法(天下万物有生于无)