小编Dan*_*scu的帖子

新关键字在幕后做了什么?

我很好奇new关键字除了改变this范围所指的内容之外还在后台做了什么.

例如,如果我们使用new关键字比较来使对象上的函数集属性和方法只是使函数返回一个新对象,那么新对象有什么额外的作用吗?

如果我不希望从函数构造函数创建多个对象,那么这是首选

var foo2 = function () {
  var temp = "test";

  return {
    getLol: function () {
      return temp;
    },

    setLol: function(value) {
      temp = value;
    }
  };

}();

var foo = new function () {
  var temp = "test";

  this.getLol = function () {
    return temp;
  }

  this.setLol = function(value) {
    temp = value;
  }
}();
Run Code Online (Sandbox Code Playgroud)

firebug探测器告诉我使用new关键字稍微快一点(2ms而不是3ms),对大型对象来说新的仍然明显更快?

[编辑]

另一个问题是真正大的对象构造函数在函数的底部有一个返回(它将具有大量的本地函数)或者有一些this.bar = ...在函数的顶部更具可读性?什么被认为是一个好的约定?

var MAIN = newfunction() {
    this.bar = ...

    // Lots …
Run Code Online (Sandbox Code Playgroud)

javascript oop prototype object new-operator

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

行高如何垂直居中文本?

我试图理解为什么line-heightCSS属性将文本垂直放在此按钮的中间:

.btn-order {
    width: 220px;
    height: 58px;
    font-size: 24px;
    padding: 0;
    text-align: center;
    vertical-align: middle;
    line-height: 58px;
    border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
<div class="btn-order">Complete Order</div>
Run Code Online (Sandbox Code Playgroud)

html css vertical-alignment

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

NodeJS Websocket服务器重启时如何重新连接

在Node.js中,我使用websockets/ws进行WebSocket连接.以下是客户端的代码.假设我们连接的服务器套接字停机了一分钟.close事件将触发,但是每当服务器上的套接字出现故障或错误时,重新连接到套接字的最佳方法是什么?

var ws = new WebSocket('ws://localhost');

ws.on('open', function() {
    console.log('socket open');
});
ws.on('error', function() {
    console.log('socket error');
    // how do I reconnect to the ws after x minutes here?
});
ws.on('close', function() {
    console.log('socket close');
    // how do I reconnect to the ws after x minutes here?
});
Run Code Online (Sandbox Code Playgroud)

websocket node.js

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

谷歌地图 - 缩放时保持中心

在谷歌地图中,​​我希望能够在我放大或缩小时将地图的中心保留在我所在位置的标记上.这是Ingress所做的事情,无论你双击(或双击)或捏合的地方,地图都会在你的标记上居中.所以有可能......

我现在想出的最好的是:

google.maps.event.addListener(mymap, 'zoom_changed', function() {
    mymap.setCenter({lat: myLoc.lat, lng: myLoc.lon});
})
Run Code Online (Sandbox Code Playgroud)

但它远非完美,它只是在用户已经缩放后重新定位地图...

非常感谢 !

[编辑]绝对没有任何帮助API参考...或其他地方我是盲目的,错过了它!

javascript google-maps google-maps-api-3

15
推荐指数
1
解决办法
2486
查看次数

在promise中超时函数的最佳通用做法是什么?

使用超时实现函数调用

我已经看到许多资源提供Promise.race了在给定时间段内使用超时函数调用的类似示例.这是如何Promise.race在实践中使用的一个很好的例子.这是一些示例代码:

function doWithinInterval(func, timeout) {
    var promiseTimeout = new Promise(function (fulfill, reject) {
       // Rejects as soon as the timeout kicks in
       setTimeout(reject, timeout);
    });
    var promiseFunc = new Promise(function (fulfill, reject) {
        var result = func(); // Function that may take long to finish
        // Fulfills when the given function finishes
        fulfill(result);
    });

    return Promise.race([promiseTimeout, promiseFunc]);
}
Run Code Online (Sandbox Code Playgroud)

上面使用的简单方法Promise.race一旦超时func完成就会拒绝承诺.否则,一旦func函数在超时间隔之前完成,项目就会完成.

这听起来不错,易于使用.

但是,这是在Promise中使用超时的最佳做法吗?

当然,如果我们想使用Promises为函数调用设置超时,可以使用上面的方法.这些行动似乎仍然是一个很好的承诺.但是,这被认为是在Promise中使用超时的好方法吗?如果没有,使用它的缺点是什么?

我正在寻找替代方法,但找不到本机的Promise方法来做到这一点.

相反,一些外部Promise库提供timeout如下功能:

javascript promise ecmascript-6 es6-promise

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

如何在发电机内使用等待?

我有一个生成器,在其他操作中,查询数据库,如

function* current(db) {
  const items = await db.collection('...').find({ ... });

  for (const item of items)
    if (...) yield item;
}
Run Code Online (Sandbox Code Playgroud)

这是无效的语法.使用承诺和屈服于a then也是不可能的.

那我该怎么办?如何在生成器中使用异步操作?

asynchronous generator async-await ecmascript-6

15
推荐指数
1
解决办法
2073
查看次数

第一次失败后,Jest停止测试套件

我正在使用Jest进行测试.

我想要的是,当测试套件中的测试失败时,停止执行当前的测试套件.

该选项--bail不是我需要的,因为它在一个测试套件失败后停止其他测试套件.

javascript testing unit-testing jestjs

15
推荐指数
3
解决办法
6314
查看次数

如何以便携方式获取Perl中的当前用户?

如何以便携方式获得当前用户?

这看起来像是常见问题,但是perlport并没有谈到它,也许是因为一些奇怪的系统没有"用户"的概念?但是,让我们坚持使用*nix和Windows.

getpwuid($>) 没有在Windows上实现.

$ENV{USER} || $ENV{USERNAME} 看起来很挑剔.

http://search.cpan.org没有发现太多.

perl portability

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

如果我需要额外的REST API,Meteor是一个选项吗?

我将要编写一个Web应用程序,它应该可以从Web和本机移动设备应用程序访问CRUD.对于后者,我肯定致力于REST API.有可能通过Meteor.com意识到这一点吗?将Meteor用于网络和第二个REST接口直接与mongo通信是一种选择吗?由于流星客户端侦听mongodb的变化,这不应该引起冲突,是吗?

rest meteor

14
推荐指数
1
解决办法
7523
查看次数

使用来自InfluxDB测量的不需要的字段值删除点

InfluxDB允许您根据条件删除点WHERE tag='value',但不能按字段值删除.

例如,如果您在一系列正浮点数(例如CPU利用率)中意外存储了值为-1的度量值,DELETE FROM metrics WHERE cpu=-1则会返回此错误:

删除期间WHERE子句中不支持的字段

delete-row influxdb

14
推荐指数
3
解决办法
9769
查看次数