1.面向对象特点
- 封装:隐藏对象的属性和实现细节,仅对外公开接口
- 继承:通过继承,我们可以非常优雅地实现对现有代码的重用
- 多态:不同对象通过相同的方法调用实现各自行为的能力,称之为多态
2.构造函数与普通函数区别
- 用new关键字调用
- 函数内部使用this关键字
- 默认不用return返回值
- 函数命名建议首字母大写,方便与普通函数区分
3.数据属性
- Configurable:表示能否通过delete删除属性从而重新定义属性
- Enumerable:表示能否通过for-in循返回属性
- Writable:表示能否修改属性的值
- Value:包含这个属性的数据值
4.访问器属性
- Configurable:表示能否通过delete删除属性从而重新定义属性
- Enumerable:表示能否通过for-in循返回属性
- Get:在读取属性值时调用的函数
- Set:在写入属性值时调用的函数
5.创建对象模式
- 工厂模式:解决代码重复问题
- 构造函数模式:解决从原型对象生成实例的问题
- 原型模式:解决内存浪费问题
- 组合构造函数模式和原型模式:集两种模式之长
- 动态原型模式:在构造函数中初始化原型
- 寄生构造函数模式:在特殊情况下,用来为对象创建构造函数
- 稳妥构造函数模式:禁止使用this和new,更安全
6.运算符和方法
- instanceof运算符:验证原型对象与实例对象之间的关系
- isPrototypeOf方法:用来判断某个proptotype对象和某个实例之间的关系
- hasOwnProperty方法:用来判断某一个属性是本地属性,还是继承自prototype对象的属性
- in运算符:用来判断某个实例是否含有某个属性,还可以用来遍历某个对象的所有属性
7.call与apply
- 用途:改变this的指向,将函数绑定到另外一个对象上去运行
- 第一个参数都必须有且是一个对象
- 定义参数方式不同,后者的第二个参数是arguments
8.继承
- 原型链继承:利用原型让一个引用类型继承另一个引用类型的属性和方法
- 借用构造函数继承:在子类型构造函数的内部调用超类型构造函数
- 组合继承:集二者之长
- 原型式继承:借助原型并基于已有的对象创建新对象,不用创建自定义类型
- 寄生式继承:创建一个仅用于封装继承过程的函数
- 寄生组合式继承:解决两次调用的问题