1.原型链
- 概念
1.每个构造函数(类)都有一个显示原型prototype
2.每个实例(对象)都有一个隐式原型__proto__
3.对象的隐式原型__proto__等于其构造函数的显示原型prototype
4.当查找对象的属性或方式现在自身上找不到则沿着原型(__proto__.__proto__)向上查找
5.我们把原型链形式的链条关系成为原型链
- 作用
1.实现了js的继承
2.可以给所有的类的实例添加公用方法和属性
2.函数类
function Animal(){}
var a1= new Animal()
- 通过new执行的函数称为构造函数(建议大写)可以成为类 函数
- 通过new生成对象 称为类的实例(实例对象)
- 构造函数中的this只想对应的实例
3.闭包
1.function outer(){
var a =100;
return function(){
a++:
console.log(a)
}
}
var inner = ();
inner()
2.function outer(fn){
fn():函数作为参数被传入
}
- 特点
函数嵌套函数函数作为返回值被返回 函数作为参数被传入
- 作用
创建局部作用域;在函数外部访问函数内部的局部变量;封装组件与插件
- 缺点
闭包中的自由变量不会自动销毁 会常驻内存 使用不当容易造成泄漏
- 考点
比保重的自由变量(在该作用域没有定义就使用变量)在函数定义时候确定的不是函数执行时候确定的
4.继承
- class类可以用extends关键字实现继承
- 函数类继承
- 继承构造函数
function Student(name,age,no){
Animal.cal(this,name,age)
} - 继承原型
Student.prototype = Object.create(Animal.prototype) - 修正构造函数
Student.prototype.constructor = Stuent;
//自定义Student 扩展方法
Student.prototype.study = function(){}
5.this冒充
- add.call(obj,3,5)
执行add函数用obj冒充this 3和5是参数 - add.apply(obj,[3,5])
执行add函数 用obj冒充this 传参数用数组