JS中构造函数与普通函数的区别

70 阅读1分钟

1、调用方式不一样

  • 普通函数调用方式:直接调用person();
  • 构造函数调用方式:需要使用new关键字来调用 new person();
    //构造函数也是一个普通函数,创建方式和普通函数一样。
    function fn(){} 
    //普通函数调用方式
    fn();
    //构造函数调用方式
    let f = new fn();

2、作用不一样(构造函数用来新建实例对象)

3、首字母大小写习惯

  • 一般构造函数的函数名首字母大写;
  • 普通函数用小写

4、函数中this的指向不同

  • 普通函数中的this,在严格模式下指向undefined,非严格模式下指向window对象。
  • 构造函数的this则是指向它创建的对象实例。
    //普通函数
    function fn(){
        console.log(this===window);
    } 
    fn();
    //代码运行结果:true
    
    
   //构造函数
   function fn(){ 
       this.name = "张三";
   } 
   let f = new fn();
   console.log(f.name); 
   //代码运行结果:张三 
   //补充:构造函数的函数名和类名相同:fn()这个构造函数,fn是函数名,也是这个对象的类名。    

5、写法的不同

    //构造函数
    function Person(name){
        this.name = name; 
    } 
    let p = new Person('John');
    //使用new关键字,不使用return

    //普通函数
    function person(name){
        let obj = new Object(); 
        obj.name = name; 
        return obj;//使用return 
    } 
    let p = person('john');