繁体   English   中英

选项意义= merge({},options)语句

[英]Sense of options = merge({}, options) statement

serve-static npm库的源代码中,我看到了以下行

 options = merge({}, options)

merge功能来自utils-merge库,它具有以下主体

exports = module.exports = function(a, b){
  if (a && b) {
    for (var key in b) {
      a[key] = b[key];
    }
  }
  return a;
};

options = merge({}, options)语句的含义是什么options = merge({}, options)因为它只是将options对象与一个空对象连接在一起?

merge({}, options)创建一个与源对象具有相同属性的新对象(因此这是克隆JS对象的最简单方法)。 但是,如果您不传递空对象作为合并函数的目标对象,或者只是跳过此行,则serveStatic()函数内部的options对象上的所有更改都会影响传递给函数serveStatic()外部对象。

这是对此JavaScript语言细微差别的详细说明: https : //stackoverflow.com/a/3638034/1806421

options = merge({}, options)语句的含义是什么options = merge({}, options)因为它只是将options对象与一个空对象连接在一起?

要做到这一点。 它将所有属性复制到一个新对象中,即使serveStatic的调用者仍然持有对其传递的options对象的引用,也无法在此处对其进行修改。

但是,避免调用者弄乱对象不是分离对象的唯一原因。 如果继续阅读,我们会看到类似

delete options.setHeaders
options.maxage = options.maxage || options.maxAge || 0
options.root = root

因此我们也要避免弄乱传递给我们的对象。 改变您的论点是一种反模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM