1、传统模式
过多的继承了没用的属性
2、借用构造函数 call/apply
不能继承构造函数的原型 prototype
每次构造函数都要多走一个函数
3、共享函数 公有原型
他们指向同一个房间,不能随便修改。
Father.prototype.lastName = 'Deng'
function Father() {
}
function Son() {
}
//公有原型 lastName
Son.prototype = Father.prototype4、圣杯模式
Father.prototype.lastName = 'Deng' function Father() { } function Son() { } // Son.prototype = Father.prototype
//用圣杯模式F函数 作为中间层 function F() {} F.prototype = Father.prototype; Son.prototype = new F();this
- 函数预编译过程中 this----(指向) window
- 全局作用域里 (GO)this---- (指向)window
- call/apply 可以改变函数运行时的this指向
- 谁调用方法 this就指向谁
obj.fun()
fun() <----this指向obj