我首先想了解
envCtor = ({ node: ENV_node })[envCtor];
正在进行
已确定
envCtor
是字符串,它将其设置为:
-
ENV_node
(如果
环境管理器
是
"node"
),或
-
标准对象属性(例如
Object.prototype
)如果
环境管理器
是
"toString"
,
"valueOf"
,等,或
-
undefined
(我不能保证他们是故意做第二件事的,因为他们是做什么的
环境管理器
稍后。:-)
toString
不是构造函数。)
这个
方法
它是通过创建一个具有“自己”属性的对象来实现的,
node
,然后是通常的继承属性集,然后查找名称与
环境管理器
一串下面是一个分为几个部分的版本:
var tempObj = {node: ENV_node};
var newValue = tempObj[envCtor];
envCtor = newValue;
原因是
()
是为了避免与创建块而不是使用
{node: ENV_node}
。然而,没有真正的需要它们,它们可以被移除。解析器不会处理
{
作为块的开头,如它出现在赋值运算符的右侧。
例子:
var ENV_node = "the ENV_node value";
function test(envCtor) {
var before = envCtor;
envCtor = { node: ENV_node }[envCtor];
console.log(before + " -> " + envCtor);
}
test("node");
test("toString");
test("foo");