Tag: 工厂

新function返回新function

我对JavaScript中的新关键字有点困惑。 以下面的例子 function A (value) { this.a = value; } function B (value) { return new A (value); } console.log ( B (0)); // { a: 0 } console.log (new B (0)); // { a: 0 } 我希望能够创build一个“A”的新实例,而不必使用“新”。 为此,我有“B()”,但是当我调用“new B()”时,它看起来与“B()”做了同样的事情,就像忽略了“new”一样。 在这两种情况下,instanceof等于“A”。 究竟是怎么回事?

节点简单对象工厂模块

所以我有一个使用MQTT的节点应用程序。 我想把所有的MQTT客户端创build逻辑封装在一个地方,以减轻重构。 我写了一个如下所示的模板: var mqtt = require('mqtt') , host = 'localhost' , port = '1883'; var settings = { keepalive: 30000, protocolId: 'MQIsdp', protocolVersion: 3, username:'testuser', password:'testpass' } exports.createClient = function(clientId){ if(clientId){ settings.clientId = clientId; }//otherwise default return mqtt.createClient(port, host, settings); } 我很新的节点,并会说我有中级的JavaScript编程技巧。 无论什么原因,只要我用多个客户端创build运行这个代码,所有的地狱都会崩溃。 他们打得不好,踢对方连线。 但是,如果我直接在每个文件中input完全相同的代码,则没有问题。 团队中更有经验的节点开发人员之一说,这可能是节点caching用户模块的方式? 当多次调用创build客户端时,代码实际上不会返回新的客户端实例。 我怎样才能重写这个简单的工厂正常工作?