一、闭包
闭包的概念:就是能够读取其他函数内部变量的函数
闭包的用处:1.读取函数内部的变量2.让这些变量的值始终保存在内存中
闭包的缺点:1.造成内存的泄露。
二、继承
1.原型链继承2.借用构造函数继承3.组合继承4.原形式继承5.寄生式继承6.寄生组合式继承
借用构造函数
思想:在子类型构造函数的内部调用超类型构造函数
如:function SuperType(name){
this.name=name;
}
function SubType() {
SperType.call(this,"zhanghuan") //核心
this.age=29
}
var instance=new SubType();
alert(instance.name) //"zhanghuan"
alert(instance.age) //29
组合继承
思路:使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承
如:function SuperType (name){
this.name=name;
this.colors=["red","blue","green"]
}
SuperType.prototype.sayName=function (){
alert(this.name)
}
function SubType(name,age){
SuperType.call(this,name); //核心
this.age=age;
}
SubType.prototype=new SuperType(); //核心
SubType.prototype.constructor=SubType;
SubType.prototype.sayAge=function () {
alter(this.age)
}
var instance1=new SubType("zhanghuan",23);
instance1.colors.push("black");
alert(instance1.colors) //"red","blue","green","black"
instance1.sayName(); //zhanghuan
instance1.sayAge(); 23
var instance2=new SubType("Greg",29)
alert(instance2.colors) //"red" ,"blue","green"
instance2.sayName() //Greg
instance2.sayAge() 29