小编Kev*_*gue的帖子

原型在JavaScript中是不是很糟糕?

Felix的Node.js风格指南中,它说:

不要扩展任何对象的原型,尤其是原生对象.如果你不遵守这条规则,地狱里有一个特殊的地方在等你.

这篇文章也让我质疑原型的用途.如果您稍后要在代码中添加方法,为什么不在原始构造函数中添加它?

那么,何时需要扩展对象的原型?

javascript node.js prototype-programming

16
推荐指数
1
解决办法
2384
查看次数

用Redis查询?

我一直在学习Node.js所以我决定建立一个简单的广告网络,但我似乎无法决定要使用的数据库.我一直在使用Redis,但我似乎找不到按特定条件查询数据库的方法,而是只能获取键或列表的值或设置在键内.

我错过了什么,或者我应该使用像MongoDB这样更强大的数据库?

mongodb nosql redis node.js

15
推荐指数
2
解决办法
2万
查看次数

使用'new'创建对象时使用'return'

我今天发现了一些非常奇怪的事情:如果使用构造函数和new关键字创建对象,但是return构造函数中的函数,它的行为如下:

  1. 新创建的"对象"是一个函数.
  2. 可以像平常一样调用新函数,但是......
  3. 如果this在构造函数中维护引用,则this引用从构造函数正确创建的对象.这是你期望从中返回的new.

这是一个例子:

function Constructor() {
  var self = this;

  this.name = 'instance';
  return function() {
    return self;
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您像这样实例化:var instance = new Constructor() 将产生以下结果:

typeof instance    //returns "function"
typeof instance()  //returns "object"
instance()         //returns { name: 'instance' }
Run Code Online (Sandbox Code Playgroud)

所以我猜我有三个问题:

  1. 这是合法的,它是否跨浏览器工作?它真的很棒,我认为它可以在很多方面使用,但这种行为是否可靠?
  2. 导致此行为的后台会发生什么?
  3. (可能由2回答,但是......)新实例中是否有新对象(以'this'引用的对象),所以它都是自包含的并且被垃圾收集器正确清理了?

javascript node.js

10
推荐指数
1
解决办法
231
查看次数

Node.js:有多少Redis客户端?

在Node.js中,最好为每个单独的HTTP请求或用户执行createClient(),还是最好为所有请求重用相同的客户端?你还只用一个来获得几个并行客户端的速度吗?

nosql redis node.js

7
推荐指数
1
解决办法
2489
查看次数

node.js会在请求后自行清理吗?

我读到node.js是单线程的,因此它不会为每个http请求分叉新进程或启动新线程.但是http模块在关闭每个连接后是否有清理方法呢?例如,如果我在每次有人请求页面时在回调内创建一个对象,那么一旦响应被提供并且连接被关闭,该对象是否会被销毁?

node.js

6
推荐指数
1
解决办法
433
查看次数

Node.js - 从模块发出事件的最佳方法

我一直在玩EventEmitter,但我对如何从模块中实现它感到困惑.我见过几种不同的方式,它们似乎都有效.以下是我见过的一些内容:

这里:

var Twitter = function() {...};

Twitter.prototype = new events.EventEmitter;
Run Code Online (Sandbox Code Playgroud)

但是在"掌握节点"中他们这样做:

function Dog(name) {
  this.name = name;
  EventEmitter.call(this);
}

Dog.prototype.__proto__ = EventEmitter.prototype;
Run Code Online (Sandbox Code Playgroud)

(为什么你需要.call它?)

然后在我自己的代码中我尝试了另一种方式:

function Class() {}

Class.prototype = EventEmitter.prototype;
Run Code Online (Sandbox Code Playgroud)

它们都是以自己的方式继承EventEmitter,所以最简单的解决方案不是最好的吗?

events javascript-events node.js

5
推荐指数
2
解决办法
4753
查看次数

仅针对特定路由的会话 Cookie

我正在使用 Connect.js 和 connect-session 模块来管理会话 cookie。我注意到 Connect 在除静态文件之外的所有路由上设置了一个会话 cookie。问题是我在发送之前处理了一些静态文件,比如 JS 和 CSS 文件,所以我不能使用 Connect 的内置静态服务器,这意味着 connect-session 为这些文件设置了一个会话 cookie。由于这些文件将包含在外部站点中,因此我不希望他们随同发送 cookie。

是否可以仅为特定路由设置会话 cookie?

cookies session node.js express

5
推荐指数
1
解决办法
2070
查看次数