标签:
第六章学习
(这一章看的我云里雾里,我会多看两遍的)
伟伟:12月1日
这一章通过一整节来慢慢引出了js中继承的概念
ECMAScript支持面向对象OO编程,但js中并没有类和接口这种概念。它实现面向对象只是通过对象
一、对象可以在代码执行过程中创建和增强,因此具有动态性而非严格定义的实体。
在没有类的情况下,可以采用下列模式创建对象:
1、工厂模式:创建对象通过简单的函数,为对象添加属性和方法,然后返回对象。这个模式后来被构造函数模式取代
2、构造函数模式:可以创建自定义引用类型,可以像创建内置对象实例一样使用new操作符,
缺点:它的每个成员(包括函数)都没有无法得到复用
特点:与对象具有松散耦合的特点,可以在多个对象间共享函数
3、原型模式(理解里面函数之间的引用过程就可以理解继承是怎么来的了)
使用构造函数的prototype属性来指定哪些应该共享的属性和方法。
组合使用构造函数模式和原型模式时,使用构造函数定义实例属性,而使用原型定义共享的属性和方法
二、js主要通过原型链来实现继承。
1、原型链的构建是通过将一个类型的实例赋值给另一个构造函数的原型实现的,这样,子类型就能够访问超类型的所有属性和方法
2、原型链的问题是对象实例共享所有继承的属性和方法,不适合单独使用
3、如何解决2这个问题:利用构造函数,在子类型构造函数的内部调用超类型构造函数。这样就可以做到每个实例都具有自己的属性,还能保证只使用构造函数模式来定义类型。
4、使用最多的继承模式是组合继承,这种模式使用原型链继承共享属性和方法,而通过借用构造函数继承实例属性
此外,还存在下列可选择的继承模式:(这个部分暂时不是很明白)
1、原型式继承:可以在不必预先定义构造函数的情况下实现继承,其本质是执行对给定对象的浅复制。而复制的得到的副本还可以得到进一步的改造
2、寄生式继承:与原型式继承非常相似,也是基于某个对象或某些信息创建一个对象,然后增强对象,最后返回对象。为了解决组合继承模式由于多次调用超类型构造函数而导致的低效率问题,可以将这种模式与组合继承一起使用
3、寄生组合式继承:实现基于类型继承的最有效的方式
javascript学习笔记(五)
标签:
原文地址:http://www.cnblogs.com/song-1995/p/5040443.html