面向对象
- 面向对象是一种程序的设计思想,与之相对的是面向过程
- 面向对象注重于抽象事物,而面向过程注重叙述事物
- 面向对象逻辑清晰有条理,而面向过程在简单逻辑事物上比较方便
- js通过函数和原型,模拟了传统面向对象编程过程中类的概念实现了面向对象的编程模式
- 面向对象的编程思想,主要为了三件事,封装,继承,多态
多态
- 表示不同对象调用相同方法会产生不同结果
继承
类式继承
子类.prototype = new 父类()
缺点: 1.这种方法不支持父类添加参数 2.父类构造函数的方法和属性都为公共属性
构造函数继承
子类构造函数(name){
父类.call(this,name)
}
缺点: 1.这种方法不能继承父类的原型
组合式继承(以上俩者的组合)
子类构造函数(name){
父类.call(this,name)
}
子类.prototype = new 父类()
缺点: 1.子类构造函数的__proto__没有用 2.执行了两次父类
寄生组合式继承
inheritPrototype(子类函数,父类函数){
function F(){}
F.prototype = 父类.prototyppe;
子类.prototype = new F();
子类.prototype.constructor = 子类
}
子类.prototype = new 父类()
new执行了那些操作
1.创建一个新对象 2.将构造函数prototype指向新对象__proto__ 3.构造函数this 指向新对象 4.执行构造函数内部代码 5.返回新对象