原型
原型一点儿也不复杂:它是一个对象。
原型在哪?
从代码的角度来看,可以理解为它位于对象之中,没错,一个对象在另一个对象中。
一个对象为什么要在另一个对象中?想象一下,拍照的时候,为什么要把手机放在手中?
物尽其用。
那么原型的作用到底是什么?
现在有两个对象,一个是原型,而另一个,为了方便描述,可以给这个包含了原型的对象起个名字,就叫“真对象”吧。
首先,原型作为一个对象,和任何对象都一样,包含属性和方法。
其次,原型作为另一个对象的属性,可以为真对象提供自己力所能及的帮助。
就像孙悟空和太上老君关系非常好,每次孙悟空打不过开挂的妖怪,就去找太上老君要各种兵器和灵丹妙药。孙悟空每次见到太上老君就来一句:你的就是我的,我的还是我的,老君非常大方,每次都说:我的宝贝你随便拿随便用。
孙悟空和太上老君都是神仙,而原型和真对象都是对象,大同小异。
真对象需要原型帮助时,如何去召唤它的“太上老君”呢?很简单:obj.__proto____,一个点加一个带着双下杠的单词proto,当然这只是一种写法,还存在其他写法。
永远不要单独的去看待原型,就像是手机壳离开手机显得毫无价值,就是为了手机才买的手机壳。
“原型”这个词的实际含义是“首先我是一个对象,其次我可以帮助另一个对象”。
就像太上老君赶着来解救被三昧真火烧着了的猴哥,老君大喊:“猴子,我是你的救星”。猴子看到老君后,心里暗想:老君是我的救星啊!
原型来帮“真对象”,原型大喊:“我来帮你了,我是你的原型”。
总而言之,从真对象角度来看,它需要原型的帮助;而从原型的角度来看,它也确实能提供帮助。正是因为此对象能提供帮助,所以此时它才区别于普通对象,我们给它一个好听的(难听)名字:原型。