大部分对于JavaScript中对象的描述简直让人不知所云,在看了MDN的说明后终于理解了,不过MDN的讲解其实也没有那么通俗易懂,所以为了不要自己忘了好不容易领悟的东西,举个例子来解释对象。
1. 对象是啥?
对象就是一套模板,带有属性、方法的模板
如果你做过PPT,或者你写过东西,设计过东西,很容易理解这个事情。对象,就是一套模板,只不过把单独的东西叫做属性,把可以变化的输出叫做方法,有点像八股文。
2. 对象里面的constructer 是啥?
就是对象本身!!!
有点晕?如果是对象本身,为啥多了个名字?因为对象本身在很多情况下会被人忽视,会让人看见的其实是一个个的实例,也就是利用模板产出的产品,比如某个人的名片
最主要是输出的产品通常并不老实,经常喜欢自己新加点东西,这样一来,我们有时候就搞不清楚哪部分是模板,哪部分是实例自己加的私货,所以就有了constructor,这样你在任何时候都能分清这个问题。
3.对象里面的prototype是什么?
估计大部分人都想打死这个东西,因为最让人犯晕的就是这个。这个是模板的模板!因为很多时候模板其实也不是原创的,而是从其他模板那儿继承再修改的,所以,为了记录自己的这套模板是从哪来的,自己原创了哪些部分,哪些是从原来的模板继承过来的,于是偷偷建了一个叫做prototype的东西,存放继承的模板。
比如上面那个模板可能是从下面这个烂模板中继承并修改的
4.如果有一个新的对象准备继承旧的对象,继承的是啥?
继承的就是constructor里面的东西,因为那个是一个完整的成套的东西!即使有时候看上去是从实例继承的,也要小心,实际上继承的是模板,而不是实例,所以实例里面那些自己夹带的私货不会再继承范围内。这就是constructor的用处。