ES6构造函数class 和 ES5构造函数语法
构造函数就是JavaScript程序定义好的函数,我们直接使用就可以,实际也是一种函数,构造函数专门用于生成定义对象,通过构造函数生成的对象,称为实例化对象
构造函数分为两种,一种是JavaScript程序定义好的构造函数,称为内置构造函数,一种是程序员自己定义的构造函数,称为自定义构造函数
构造函数和普通函数的区别
1,构造函数一定要和关键词new一起使用,new关键词会自动的给构造函数定义一个对象,并且返回这个对象,我们只要对这个对象设定属性,设定方法就可以了
2,构造函数为了和其他函数区别,语法规范规定构造函数的函数名称,第一个字母必须大写,使用大驼峰命名法
3,构造函数给对象定义属性和方法的语法,与一般函数不同
ES5构造函数语法:
//自定义构造函数 function CrtObj(name,sex,age,addr){ // 定义属性 this.name = name; this.sex = sex; this.age = age; this.addr = addr; // 定义方法 this.fun = function(){ console.log(this.name,this.sex,this.age,this.addr); } } // 生成实例化对象 const obj = new CrtObj('刘五','女',26,'北京'); console.log(obj); //输出实例化对象
ES6构造函数语法:ES6与ES5构造函数语法对比,其功能作用完全相同,只是语法不同。ES6构造函数新增class语法:
class Fun{// ES6class方法定义构造函数 //constructor是构造器,定义实例化对象的属性和属性值, ()中的是参数 constructor (name,age,sex){ this.name = name; this.age = age; this.sex = sex; } //定义方法,虽然没声明,但是也是定义在构造函数中的prototype中 fAll(){ console.log(this.name,this.age,this.sex); } } // 生成实例化对象 const obj = new Fun('刘萌', 20, '女'); console.log(obj);//输出实例化对象 obj.fAll(); //输出方法
需要注意一点是ES6的class语法无法执行预解析,是不能被提前调用; ES5的function函数可以提前调用,但是只能调用属性不能调用方法。