博主的 Github 地址
1. 继承模式
- 继承模式分为 4 种: 传统模式, 借用构造函数, 共享原型和圣杯模式
(1) 传统模式
- 传统模式的继承是直接通过原型链进行继承
即以上一个构造函数产生的对象为原型进行继承
被继承对象中又包含了对其原型的指向
因此这种方式继承的话会过多的继承了一些没用的属性
(2) 借用构造函数
- 通过调用别的对象的构造函数来进行构造对象
这种方法并不能继承被借用的构造函数的原型
每次进行构造对象的时候都要多走一个函数, 效率会很低
(3) 共享原型
- 两个构造函数间共用一个原型
但使用这种方式进行继承不能随意的改动原型,
一但原型进行了修改, 凡是继承了这个原型的对象都会受到影响
(4) 圣杯模式
function inherit(Target, Origin){
function F(){};
F.prototype = Origin.prototype;
Target.prototype = new F();
Target.prototype.constructor = Target;
Target.prototype.uber = Origin.prototype;
}
- 这种模式会让每个继承的子类之间的原型互不干扰,
但是这种过程属于继承了 2 次,
第一次是函数体内部的临时函数拷贝了被继承函数的原型,
第二次是目标函数从临时函数创建的对象身上继承了原型链,
因此目标函数即便修改原型, 也不会影响被继承函数的原型, 因为始终隔着一代.
2. 命名空间
- 管理变量, 防止污染全局, 适用于模块化开发
- 将变量放到对象中去, 防止多个 js 文件同时引用发生变量冲突