您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

构造函数与工厂函数

构造函数与工厂函数

基本区别在于,构造函数new关键字一起使用(这会使JavaScript自动创建一个新对象,this在该函数内将该对象设置为该对象,然后返回该对象):

var objFromConstructor = new ConstructorFunction();

工厂函数调用类似于“常规”函数

var objFromFactory = factoryFunction();

但是要使其成为“工厂”,就需要返回某个对象的新实例:如果它仅返回布尔值或其他内容,则不会将其称为“工厂”函数。这不会像和一样自动发生new,但在某些情况下确实提供了更大的灵活性。

一个非常简单的示例中,上面引用的功能可能看起来像这样:

function ConstructorFunction() {
   this.someProp1 = "1";
   this.someProp2 = "2";
}
ConstructorFunction.prototype.someMethod = function() { /* whatever */ };

function factoryFunction() {
   var obj = {
      someProp1 : "1",
      someProp2 : "2",
      someMethod: function() { /* whatever */ }
   };
   // other code to manipulate obj in some way here
   return obj;
}

当然,您可以使工厂功能比该简单示例复杂得多。

有些人喜欢对所有功能使用工厂功能,只是因为他们不喜欢记住要使用它new(编辑:这可能是一个问题,因为没有new功能仍会运行,但不会按预期运行)。我没有看到这有什么好处:new它是语言的核心部分,因此我特意避免使用它是任意的- 最好避免使用其他关键字,例如else

工厂功能一个优点是,根据某些参数,要返回的对象可以是几种不同的类型。

其他 2022/1/1 18:13:54 有436人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶