面向对象
es5中的面向对象
js本身没有class,但是每个函数都有prototype属性。prototype指向一个对象,当函数作为构造函数时,prototype则起到类似class的作用。
面向对象三大特征:
封装:把一种事物的方法和属性封装到对象中
继承:子对象可以继承父对象的属性和方法
多态:同一个方法,自定义和父定义的内容不同
面向对象编程的优势
易维护、质量高、效率高、易扩展(耦合性比较低)
创建对象的方式:
字面量形式 : {}
Object构造函数创建
构造函数形式:new XXXX
遍历对象:
for...in
序列化;
可以把对象转换为字符串:JSON.stringify();
可以把字符串转换为对象:JSON.parse();
this关键词:
this的4种绑定规则分别是:默认绑定、隐式绑定、显示绑定、new 绑定
默认绑定:this指向当前对象
隐式绑定:function a(){ this } ==> obj={a:a} this指向obj
显示绑定:fun.call(obj) fun中this指向obj
new绑定: p = new XXX new可以改变this指向 this指向p
继承:
原型和原型链继承:new 父对象 赋值给子对象的原型
构造函数继承: 在子对象函数体内,由父对象.call()
组合继承: 原型链继承+ 构造函数继承
设计模式:
单例模式:一个类只能有一个实例,并提供一个访问它的全局访问点
工厂模式:用固定的方式批量创建对象
观察者模式:设立观察这方法,观察是否有值更新,通过Object.defineProperty,修改其他对象的属性
订阅模式:发布者内容变化,通过中间层接受并通知订阅者,订阅者收到通知,更新对应的属性
以及其他模式
es6中的面向对象
class定义类
static 静态属性
constructor方法,通过new命令生成对象实例时,自动调用该方法
super 父类构造函数
extends继承关键字
和后台语言越来越接近了
多层的json数据怎么遍历