Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript对象变量键_Javascript_Jquery - Fatal编程技术网

javascript对象变量键

javascript对象变量键,javascript,jquery,Javascript,Jquery,我正在为Jquery创建一个插件,需要在对象中有一个变量作为键 $(selector).animate({self.settings.direction: '+='+self.displacement+'px'}, "slow" , function () {}); 此部分导致错误: 自我指导 你知道我的语法哪里错了吗? 谢谢你,好的,你不能。对象文字符号中冒号前面的任何内容都将自动解释为字符串。您需要事先构造对象,并使用方括号表示法 var options = {} options[self

我正在为Jquery创建一个插件,需要在对象中有一个变量作为键

$(selector).animate({self.settings.direction: '+='+self.displacement+'px'}, "slow" , function () {});
此部分导致错误:

自我指导

你知道我的语法哪里错了吗?
谢谢你,好的,你不能。对象文字符号中冒号前面的任何内容都将自动解释为字符串。您需要事先构造对象,并使用方括号表示法

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

请记住,您正在花括号之间定义一个对象。不能在属性名称中使用点。假设先前在其他地方设置了置换特性,这将适用于您:

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

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


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

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

.toString()
调用是不必要的。变量
a
已经是一个字符串。你所需要做的就是删除引号:。容易忘记这是可用的+1:等分丑陋且有用。非常方便。这是什么黑魔法!?他们应该在Coffeescript中包含这个方法来添加变量键超级能力。如果不使用双引号,例如:
JSON.parse(“{\”+a+'\“:\“+b+'\“}”),可能是个好主意。
我认为下面的链接显示了我使用下划线提出的一个非常好的解决方案。再容易不过了!
var a = 'key';
var b = 'value';
var test = JSON.parse('{"' + a + '":"' + b + '"}"');
//test = {key: 'value'}