大家来嘲笑我吧
发布于 10 年前 作者 twogoods 3984 次浏览 最后一次编辑是 8 年前 来自 问答

var io = require('socket.io')var io = require('socket.io')()的区别?算不算很低级的问题,如果浪费大家时间,表示对不起。。。

8 回复

socket.io ->构造体本身 socket.io() ->return 内部的一个FUNCTION给你。

得自己写才知道

后来我发现有时候比问人效率更高的是尝试去看源代码。

楼主也试试。

@think2011 好巧,我也曾经发现了这个秘密

@alsotang 好巧,我刚发现这个秘密

@think2011 谢谢你的提醒,我去看了一下,但原谅我真的还是菜鸟, 源代码里有 module.exports = Server;

function Server(srv, opts){
  if (!(this instanceof Server)) return new Server(srv, opts);
  if ('object' == typeof srv && !srv.listen) {
    opts = srv;
    srv = null;
  }
  opts = opts || {};
  this.nsps = {};
  this.path(opts.path || '/socket.io');
  this.serveClient(false !== opts.serveClient);
  this.adapter(opts.adapter || Adapter);
  this.origins(opts.origins || '*:*');
  this.sockets = this.of('/');
  if (srv) this.attach(srv, opts);
}

require(‘socket.io’)返回Server这个function,api里也说了

var io = require('socket.io')();
// or
var Server = require('socket.io');
var io = new Server();

好像是多加一个()就相当于为这个function创建了一个对象?

他内部导出的是一个function(){} require(’’)() 就是执行这个方法 如果说,var t = new Server(); 相当于 面向对象里的创建一个对象,new 之后返回的是 this。走了构造函数。 我不知道我有没有表达清楚 买本js高级编程

还有就是,问题本身没有贵贱,只要自己不懂的就去问,没有人会用什么另类的眼光看待你 而且有些小问题,那些所谓的大神也不知道。所以大胆的问。:)

@struCoder 你的意思就是require(‘’)()直接执行了server方法,而new Server()执行了构造函数,也就执行了那个server方法, 今天早上有看一篇 博文 require(‘’)()就等于(function server(…){…})()是吧。 标题党,只是比较低调,比较谦虚

回到顶部