var io = require('socket.io')
与var io = require('socket.io')()
的区别?算不算很低级的问题,如果浪费大家时间,表示对不起。。。
得自己写才知道
后来我发现有时候比问人效率更高的是尝试去看源代码。
楼主也试试。
@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(…){…})()是吧。 标题党,只是比较低调,比较谦虚