[英]what is the meaning of the following function syntax in nodejs?
我在 nodejs 項目中遇到了以下函數調用。
var setEnv = function(envCtor) {
if (typeof envCtor == 'string') {
envCtor = ({
node: ENV_node
})[envCtor];
}
ENV = new envCtor({
foo: foo,
bar: bar
});
this.__env = ENV;
this.__dir = ENV.getCwd();
};
function ENV_node() {
//some code
};
setEnv('node');
我不明白語法,有人能幫我理解這個函數的內容嗎? TIA
我首先想了解什么
envCtor = ({ node: ENV_node })[envCtor];
是在做
確定envCtor
是一個字符串后,它將其設置為:
ENV_node
(如果envCtor
是"node"
),或envCtor
是"toString"
、 "valueOf"
等, envCtor
標准對象屬性(例如, Object.prototype
上的任何一個),或undefined
(鑒於他們后來對envCtor
做了什么,我不能保證他們是故意做第二個的。:-) toString
不是構造函數。)
它這樣做的方法是創建一個具有一個“自己的”屬性node
的對象,然后是一組通常的繼承屬性,然后查找名稱與envCtor
字符串匹配的屬性的值。 這是一個分為幾個部分的版本:
var tempObj = {node: ENV_node};
var newValue = tempObj[envCtor];
envCtor = newValue;
使用()
的原因是為了避免與使用{node: ENV_node}
創建塊而不是對象{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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.