【发布时间】:2013-10-10 14:30:40
【问题描述】:
我在一个自动生成的 javascript 文件中看到了这个:
function map(x){
x={x:x};
delete x.x;
return x
}
我的结论是用来创建对象的,但是为什么要这样创建呢?它是一种模式吗?
更新
更多信息,创建此代码的工具是来自 Google 的 dart2js,代码在此上下文中使用:
(function (reflectionData) {
function map(x){x={x:x};delete x.x;return x}
if (!init.libraries) init.libraries = [];
if (!init.mangledNames) init.mangledNames = map();
if (!init.mangledGlobalNames) init.mangledGlobalNames = map();
if (!init.statics) init.statics = map();
if (!init.interfaces) init.interfaces = map();
【问题讨论】:
-
我做了,它创建了一个空对象。
-
这是从哪里来的?它看起来更像是一个代码拼图,而不是你在真实库中实际看到的东西——就像它在 javascript 测验或其他东西中一样。
-
在我看来真的很愚蠢。
-
鉴于无法回答这个问题(由于没有足够的上下文 - 并看到下面的负面投票结果),我认为应该关闭。
-
在 dart 源代码中,有一条评论说这种技术用于 v8 性能原因:github.com/dart-lang/bleeding_edge/blob/…
标签: javascript javascript-objects