Javascript 如何为JS对象赋值?

Javascript 如何为JS对象赋值?,javascript,ecmascript-6,error-handling,Javascript,Ecmascript 6,Error Handling,在这两种情况下,尝试将值分配给body,以便响应有时包含有效负载,但当它作为有效负载出现时,它将有效负载添加为我粘贴的嵌套对象 main.js const logError = (message, resp) => { const logErrorPayload = { status: resp.status, body : resp || resp.payload }; logger().error(message,logErrorPayload); };

在这两种情况下,尝试将值分配给body,以便响应有时包含有效负载,但当它作为有效负载出现时,它将有效负载添加为我粘贴的嵌套对象

main.js

const logError = (message, resp) => {
  const logErrorPayload = {
    status: resp.status,
    body : resp || resp.payload
  };
  logger().error(message,logErrorPayload);
};
回应

{"level":50,"time":1565018976583,"pid":64,"hostname":"76b538d1a1fc","msg":"Error_V1 {\"status\":500,\"body\":{\"status\":500,\"payload\":{\"status\":500,\"title\":\"Internal Server Error\",\"detail\":\"Drug prices are not valid\"}}}","v":1}
期望

{"level":50,"time":1565018976583,"pid":64,"hostname":"76b538d1a1fc","msg":"Error_V1 {\"status\":500,\"body\":{\"status\":500,\"title\":\"Internal Server Error\",\"detail\":\"Drug prices are not valid\"}}}","v":1}
assign()方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象

const target={a:1,b:2}; const source={b:4,c:5}

const returnedTarget=Object.assign(目标、源)

控制台日志(目标); //预期输出:对象{a:1,b:4,c:5}

控制台日志(返回的目标);
//预期输出:对象{a:1,b:4,c:5}

您可能只是在寻找

const logError = (message, resp) => {
  const logErrorPayload = {
    status: resp.status,
    body: resp.payload,
  };
  logger().error(message, logErrorPayload);
};
resp | |
使用整个
resp
对象作为值,至少当
resp
是真实值时(当它具有属性并且因此是对象时,这是应该的)

也许您打算使用
resp&&resp.payload
,它可以处理
resp
null
,但是您需要对访问
执行相同的操作。status

const logError = (message, resp) => {
  const logErrorPayload = {
    status: resp && resp.status,
    body: resp && resp.payload,
  };
  logger().error(message, logErrorPayload);
};
或者,假设
resp
没有其他属性,您可以通过构建一个单独的
logErrorPayload
来忽略它们,您就可以这样做

const logError = (message, resp) => {
  logger().error(message, resp);
};

只需切换语句body:resp.playload | | | resp,以便在存在有效负载的情况下,首先使用它,如果不使用resp,则使用resp。这听起来像是MDN的复制粘贴,与问题完全无关。