封装
目的:将信息隐藏
将一堆方法和属性放在一起
继承
目的:找到共性,精简代码,提高重用性
1.
属性继承 :call(),apply()
改变父级构造函数内部的this
原型继承 :B.prototype = A.prototype
有引用问题
修改A就会修改B,修改B就会修改A
原型继承(推荐):for (var x in A.prototype){ B.prototype[x] = A.prototype[x];}
2. 子级对象原型指向父级对象实例 (推荐)
B.prototype = new A();
B.prototype.cpnstructor = B;
案例:朋友圈
多态
在JS中存在感很弱
目的:使语言具有动态性,具有更好的通用性