1、e5继承:
克隆式继承
for in 继承:也就是父类有的方法和属性,你需要什么你就复制过来用就行,也很容易理解,但是,相比于原型链继承,非常的磨叽,接下来看原型链继承了!!!
原型链继承:
什么是原型链继承呐?和copy继承又有啥区别呢?请听笔者一一道来,莫要慌张。
所谓的原型链继承就是,我不需要拷贝你的东西,但是我要你的使用权(可以想象可爱的寄居蟹,把海螺的房子拿来自己住,嘎嘎!!),说白了,我不像copy继承一样那么磨叽,我直接把我的原型指针指向我要继承的原型。
说到这里是不是又蒙圈了呐??不急,接下来逐步剖析。。。。
1、首先我们把子类(JS没有类的概念,类只是语法糖,它的雏形就是构造函数,我只是方便看官们理解)的原型指针指向父类,看图~
运行这段代码之后,你会很奇怪,这是个啥啊,我的constructor呢,你是不是框我呐,
你只要把Son.constructor = Son指回去就好了
但是你可能会发现,_proto_这玩意儿兼容性不好,ie不一定能运行,你的想法没错。接下来进阶了,
我们呢,把指针指向new Father()
小可爱们,可能你们已经发现了。我的_proto_咋就指向了Farther,这个问题就是JS机制,不用理会
,你们又有问题了,这样太磨叽了,还要实例Father,OK,我们的终极大招要来了!!!
Object.create()
,对,就是这么简单,一个Object.create,搞定了
2、es6继承:
extends继承,相当的简单,直接上图
super()继承
继承下来之后可以随便改造,为所欲为了!!!
继承知识到此就告一段了,有啥问题的小可爱,欢迎留言讨论哈~~~~~