JavaScript里面函数和构造函数的区别

1.命名的方法不同
普通函数使用的是小驼峰命名法,而构造函数使用的是大驼峰命名法,即首字大小写的区别

  function fn(){
        var a =1;
      }//普通函数

      function Fn(){
        var a =1;
      }//构造函数

2.调用方式的不同
任何函数只要使用new关键字来调用,那么它就是一个构造函数
而如果不使用new关键字来调用,那么它就是一个普通函数

       //普通函数
        function person(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayHello = function () {
                console.log('你好,我叫' + this.name);
            }
        }
        //普通函数的调用方法
        person('lab', 18, '男');
        window.sayHello(); //你好,我叫lab
        console.log(age); //18


        //构造函数
        function Person(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayHello = function () {
                console.log('你好,我叫' + this.name);
            }
        }
        var p = new Person('lhm',23,'女');
        p.sayHello();//你好我叫lhm
        console.log(p.age);//23

3.this关键字的指向不同
普通函数和构造函数中this的指向位置不同,普通函数中this指向为window,而构造函数中this指向的是实例,也就是只想的是 自己

    //普通函数
        function fn(){
            console.log(this);//打印结果为 Window
        }
        fn();

        //构造函数
        function Fn(){
            console.log(this);//打印结果为 Fn{}
        }
        var f = new Fn();

4.返回结果的不同
普通函数不写return的情况下返回结果为undefined,构造函数返回结果为构造函数的内容,不会返回undefined

     function fn(a,b){
            this.a = a;
            this.b = b;
            //不写return
        }
        var result = fn(1,2);
        console.log(result);//输出结果为undefined
        
        //构造函数
        function Fn(a,b){
            this.a = a;
            this.b = b;
            this.sayHi = function(){
                console.log(this.a);
                
            }
            //不写return
        }
        var f = new Fn(1,2);
        console.log(f); //输出结果为Fn{a:1,b:2,sayHi:f}
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值