发表于: 2019-03-10 22:25:53
1 572
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
1.原型链
原型链的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。假如我们让原型对象等于另一个类型的实例,结果会怎么样呢?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构成了实例与原型的链条。这就是所谓原型链的基本概念。
2.借用构造函数
在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数的技术。这种技术的基本思想非常简单,即在子类型构造函数的内部调用超类型构造函数。一般都是通过apply()和call()方法也可以在新创建的对象上执行构造函数。
3.组合继承
组合继承,有时候也叫做伪经典继承,指的是将原型链和借用构造函数的技术组合在一块,从而发挥二者之长的一种继承模式。其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。。这样,既通过在原型上定义方法实现了函数复用,又能够保证每个实例都有它自己的属性。
4.原型式继承
道格拉斯·克罗克福德在一篇文章中介绍一种实现继承的方法,这种方法并没有实现严格意义上的构造函数。通过借助原型可以给予已有的对象创建新对象,同时还不必因此创建自定义类型。
5.寄生式继承
寄生式继承是与原型式继承紧密关联的一种思路,即创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再想真地是它做了所有工作一样返回对象
现阶段中运用比较广泛的是组合式继承,因为原型链和构造函数继承方式都有相对应的缺点,比如说原型链最主要的问题来自包含引用类型值的原型。而构造函数的缺点是不能很好地封装对象方法。一般情况下只有对象没有方法的情况下才会使用构造函数。而组合式继承继承了原型链和构造函数的优点,并完善了二者的不足。
寄生组合式继承和组合式继承有什么区别?
组合式继承是javascript最常用的继承模式;表格,它也有自己的不足。组合继承最大的问题就是无论在什么情况下,都会调用2次超类型构造函数。而寄生组合式继承可以很好的解决这个问题。
明天计划的事情:(一定要写非常细致的内容)
继续任务
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
如上
评论