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