JavaScript 工厂函数到底是什么?

What exactly is JavaScript factory functions?

JavaScript 中的 factoryfunctions 到底是什么?它解决了什么问题?什么是实时示例?

工厂函数是一个构建对象并return它的普通函数。例如我们可以这样创建一个人interface/class:

function createPerson(name,age)
{
   let per  = new Object();
   per.name = name;
   per.age  = age;
   per.sayName() = function(){
                      return this.name;
                      };
  return per;
}

使用这个工厂函数模式,您可以通过这种方式创建一个新的 person 实例:

let myNewPerson = createPerson("Nick",20);

此模式的主要问题是函数 属性 不在原型 trereby 中,为每个函数创建一个新对象(匿名函数是一个对象,函数的一个实例)属性。此外,这种模式没有解决对象识别的问题,即不可能说出一个对象是什么类型的对象。