最近在学习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();