刚学习es6关于原型和继承的一些小例子

最近在学习es6,写了一些小的demo

js以前写构造函数是在prototype上挂载方法

function Fun(name,pass){
    this.name = name;
    this.pass = pass
}

Fun.prototype.showName =function(){
    console.log(this.name);
}

Fun.prototype.showPass=function(){
    console.log(this.pass);
}

var fun= new Fun('小红','654321');

fun.showName();
fun.showPass();

 

而当有别的函数要继承此函数的属性时,就有一点麻烦,

function NewFun(name,pass,level){
    Fun.call(this,name,pass);

    this.level=level;
}
NewFun.prototype = Object.create(Fun.prototype);
NewFun.prototype.constructor = NewFun;

NewFun.prototype.showLevel=function(){
    console.log(this.level);
}

var newfun= new NewFun('小明','123456',9);
newfun.showName();
newfun.showPass();
newfun.showLevel();

 

但是在es6中引入了类这个概念,可以直接声明一个类,使用也方便了很多

class Fun{
    constructor(name,pass){
      this.name=name;
      this.pass=pass;
  }

  showName(){
      console.log(this.name);
  }
  showPass(){
      console.log(this.pass);
  }
}

var fun= new Fun('小红','654321');
fun.showName();
fun.showPass();

 

特别是当要继承这个类的属性的时候就更是方便

class NewFun extends Fun{
    constructor(name,pass,level){
        super(name,pass);
        this.level= level;
    }

    showLevel(){
        console.log(this.level);
    }
}
var newfun= new NewFun('小明','123456',9);
newfun.showName();
newfun.showPass();
newfun.showLevel();

 

posted @ 2018-01-26 20:26  蓝封  阅读(1203)  评论(0编辑  收藏  举报