【问题标题】:,How do I give an object a name via function argument? [duplicate],如何通过函数参数给对象命名? [复制]
【发布时间】:2014-11-04 18:22:49
【问题描述】:

我有这样的功能:

function dataSend(type, message) {
  return {
    type: message
  };
};

我是这样使用的:

io.sockets.emit('addToQueue', dataSend('error', 'User not found'));

但是当它到达客户端时,我得到一个类似的对象

{ type: 'User not found' } 代替 { 'error': 'User not found' }

为什么会这样?我不确定如何解决这个问题,任何信息都会非常感谢。

【问题讨论】:

  • 使用 ES6 你可以做到{[type]: message}

标签: javascript


【解决方案1】:

试试这个:

function dataSend(type, message) {
  var a={};
  a[type]=message;
  return a;
}

Javascript 不需要在属性名称周围加上引号。

使用{type:message}{'type':message} 会产生相同的结果。

【讨论】:

  • 不喜欢纯代码的答案。您应该添加对 OP 失败的原因以及您的答案修复它的原因的解释。
  • @RobG 当您创建{type:message} 时,您正在创建属性type。 Javascript 不需要在属性名称周围加上引号。
  • 我知道答案,我在评论,以便您可以使这个和未来的答案更好。 :-)
  • @RobG 感谢您的提示。我完全忘记这样做了。
【解决方案2】:

你不能用这样的变量设置键,你需要括号表示法

function dataSend(type, message) {

   var obj = {};

   obj[type] = message;

   return obj;

};

【讨论】:

  • 不,一直在发生,别担心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
相关资源
最近更新 更多