面试总结: 闭包相关问题与继承相关的问题

一、闭包

闭包的概念:就是能够读取其他函数内部变量的函数

闭包的用处: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

猜你喜欢

转载自blog.csdn.net/mrhuanhuan/article/details/82927402