JavaScript中的构造函数和工厂函数说明

在cnblog上看到一篇文章,讲解JS中的构造函数和工厂函数,觉得讲的真好

JavaScript中的工厂函数和构造函数都能用来创建一个对象,我们可以来看看下面的例子

构造函数

function createStudent(id,name,class,grade){
   
             var o = new Object();
             o.id = id;
             o.name = name;
             o.class = class;
             o.grade = grade;
             o.GetInfo = function(){

             console.log("学生" + this.name + "来自" + this.class + "班级");

              }

            return 0;
}

var student1 = new createStudent(1,"Luke","Class 1", 5);
      student1.GetInfo();

JavaScript中的构造函数

function Student(id,name,class,grade){
    
           this.id = id;
           this.name = name;
           this.class = class;
           this.grade = grade;
           this.GetInfo = function(){
             console.log("学生" + this.name + "来自" + this.class + "班级");
          } 
}
var student2 = new Student(2,"Mike","Class 3",6);
student2.GetInfo();

可以看出,上面两个代码片段都能去创建一个Student对象,区别在于,在用工厂函数创建Student对象时,无法知道这个对象的类型, 但用构造函数创建对象时,能够很明确地知道它是什么类型

具体如下

console.log(student1 instanceof Student) 返回false, Student1 是Object类型

console.log(student2 instanceof Student) 返回true