簡體   English   中英

nodejs中以下函數語法的含義是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM