javascript对象变量键

sal*_*ane 28 javascript jquery

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

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

这部分导致错误:

self.settings.direction

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

Ama*_*dan 84

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

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

  • 很容易忘记这是可用的 (2认同)

小智 11

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

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


小智 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
Run Code Online (Sandbox Code Playgroud)

  • `.String()`调用是不必要的.变量"a"已经是一个字符串.您需要做的就是删除引号:http://jsfiddle.net/FJCFW/. (6认同)