2014-09-10 34 views
0

我有这样的功能:,我如何通过函数参数给对象一个名字?

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

里面我是用这样的:

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

但是当它到达客户端,我碰到一个对象,它是像

{ type: 'User not found' } 而不是 { 'error': 'User not found' }

为什么是硫像这样表演?我不知道如何解决这个问题,任何信息将非常感谢。

+0

用ES6你可以做'{[type]:message}' – 2014-09-11 01:35:52

回答

3

您不能设置与像一个变量的关键,你需要括号标记

function dataSend(type, message) { 

    var obj = {}; 

    obj[type] = message; 

    return obj; 

}; 
+0

这很尴尬... – 2014-09-10 23:27:22

+0

不,一直发生,不要出汗。 – adeneo 2014-09-10 23:27:52

1

试试这个:

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

JavaScript不要求周围的属性名称报价。使用{type:message}{'type':message}产生相同的结果。

+0

不支持代码的答案。您应该添加关于OP失败的原因的解释以及您的答案为何解决该问题。 – RobG 2014-09-10 23:28:10

+0

@RobG当你创建'{type:message}'时,你正在创建'type'属性。 Javascript不需要引用属性名称。 – 2014-09-10 23:28:37

+2

我知道答案,我在评论,所以你可以使这个和未来的答案更好。 :-) – RobG 2014-09-10 23:31:11

相关问题