Javascript 你会怎么写一个“你会怎么写?”;建造商;

Javascript 你会怎么写一个“你会怎么写?”;建造商;,javascript,Javascript,我一直在玩弄“工厂功能”的概念,因此请考虑: var HelloWorld = function() { return { hello: function() { console.log('hi'); } } } 我们知道它被实例化为:var helloWorld=helloWorld()

我一直在玩弄“工厂功能”的概念,因此请考虑:

var HelloWorld = function() {

    return  {
       hello: function() { console.log('hi'); }
    }
}

我们知道它被实例化为:
var helloWorld=helloWorld()HelloWorld.hello()
,而不是像类一样“实例化它”?或者这是一个完全不同的概念?

看看下面的代码:

var HelloWorldFactory = function(text) {
    return  {
       hello: function() { console.log(text); }
    }
};
var HelloWorld = {
  hello: function() { console.log('hi2'); }
};
var helloWorld = HelloWorldFactory('hi');
helloWorld.hello();
HelloWorld.hello();
正如@Quentin在评论中提到的,他调用了
HelloWorldFactory('hi')您不是在调用js构造函数,而是在调用一个返回对象的函数


执行
HelloWorld.hello()
是一个不同的概念,因为您只需使用aleardy定义的对象(它可以通过工厂创建,也可以在代码中定义)

在您的示例中,您将返回一个带有函数属性的对象文本。您也可以直接返回一个函数。但最后这是工厂模式,创建函数的构造函数是
函数
函数,而不是
HelloWorld
函数的原型,就像构造函数一样

函数是JS中的纯对象。你可以像对待物体一样对待它们。所以,你想对他们做什么就做什么

function HelloWorld(){};

     HelloWorld.thank = function(){console.log("thanks")};
   HelloWorld.message = "hello";
HelloWorld.sayMessage = function(){console.log(HelloWorld.message)};
但是,构造函数的函数略有不同。它们是用
new
关键字调用的,正如我前面提到的,它们将自己的原型分配给所创建的对象。这是JS中最复杂的部分之一。我看到很多人认为
new
是无用的,最好避免使用,而应该首选
Object.create()
,但事实并非如此。有时构造函数非常有用,因为您可以在构造过程中建立惊人的原型关系。

,而且它与通过工厂函数创建对象无关(构造函数是通过。。