相关疑难解决方法(0)

Bluebird的util.toFastProperties函数如何使对象的属性"快速"?

在Bluebird的util.js文件中,它具有以下功能:

function toFastProperties(obj) {
    /*jshint -W027*/
    function f() {}
    f.prototype = obj;
    ASSERT("%HasFastProperties", true, obj);
    return f;
    eval(obj);
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在返回函数之后有一个声明,我不知道它为什么存在.

同样,它似乎是故意的,因为作者已经沉默了JSHint对此的警告:

'return'后无法访问'eval'.(W027)

这个功能到底是做什么的?难道util.toFastProperties真的让一个对象的属性"快"?

我在Bluebird的GitHub存储库中搜索了源代码中的任何注释或者问题列表中的解释,但我找不到任何注释.

javascript performance v8 node.js bluebird

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

"词典模式"的利弊

据我所知,当您删除对象上的条目时,使用Javascript,至少使用chrome,它会将对象置于"字典模式"或"慢速模式"

例:

var user = { name: 'connor', sex: 'male' }; 
// user is in "fast mode"

delete user.sex;
// user is in ("slow" or "dictionary") mode 
Run Code Online (Sandbox Code Playgroud)

什么时候这可能是有益的,何时可能是有害的?

一个具体的案例是,我有一个对象,当应用程序启动时,对象是空的,但是当代码运行并且应用程序内存建立时,它可能会变得非常大,并且对象永远不会减小,直到应用程序关闭它不会存在.

这种模式还有任何语义吗?

javascript performance v8 object javascript-objects

9
推荐指数
2
解决办法
1385
查看次数