javascript对象变量键

时间:2011-05-20 11:49:43

标签: javascript jquery

我正在为Jquery创建一个插件,并且需要将变量作为对象中的键。

$(selector).animate({self.settings.direction: '+='+self.displacement+'px'}, "slow" , function () {});

此部分导致错误:

  

self.settings.direction

我的语法错误的任何想法? 谢谢

4 个答案:

答案 0 :(得分:84)

AFAIK,你做不到。对象文字表示法中冒号前面的任何内容都将自动解释为字符串。您需要事先构造对象,并使用方括号表示法。

var options = {}
options[self.settings.direction] = '+=' + self.displacement + 'px';
$(selector).animate(options, "slow" , function () {});

答案 1 :(得分:11)

如果值也是字符串,则可以使用JSON.parse:

var a = 'key';
var b = 'value';
var test = JSON.parse('{"' + a + '":"' + b + '"}"');
//test = {key: 'value'}

答案 2 :(得分:7)

您可以使用toString()访问变量定义的字符串。 所以:

var obj = new Object;

obj.a = 0;
obj.b = 1;

var a = "b";

obj["a"]; // will output 0
obj[a.toString()] // will output 1

答案 3 :(得分:1)

请记住,您在大括号之间定义了一个对象。您不能在属性名称中使用点。假设置换属性在之前的其他位置设置,这将适合您:

$(selector).animate({settings: {direction: '+='+self.displacement+'px'}}, "slow" , function () {})