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函数可以提前调用,但是只能调用属性不能调用方法。

猜你喜欢

转载自www.cnblogs.com/yiyi1234/p/12727795.html