Javascript var in property

Javascript var in property

本文关键字:property in var Javascript      更新时间:2023-09-26

我在下面的代码中添加JS变量"vpath"有问题:

var vpath = myarr[0];
jwplayer("player").setup({
   flashplayer: "player.swf",
    config:"config.xml",
    autostart: false,
    allowscriptaccess: "always",
    height: 500,
    width: 625,
    plugins: {
   'http//www.test.com/'+ vpath +'/proxy.swf': {link:"http://www.test.com/link.php"},
   'http//www.test.com/image.swf': {link:"http://www.test.com/image.jpg"}
    }
    });

属性id后出现SyntaxError: missing:。有人知道怎么做吗?谢谢你。

不能在对象字面量中使用属性名中的变量(精确的语法和语义在§11.1.5中指定)。解决方案是首先使用任何静态属性定义对象,然后向对象添加任何动态属性。

在您的情况下,我建议单独创建plugins对象,如下所示:
var vpath = myarr[0];
var plugins = {};
plugins['http//www.test.com/image.swf'] = {link:"http://www.test.com/image.jpg"}
plugins['http//www.test.com/'+ vpath +'/proxy.swf'] = {link:"http://www.test.com/link.php"};
jwplayer("player").setup({
   flashplayer: "player.swf",
   config:"config.xml",
   autostart: false,
   allowscriptaccess: "always",
   height: 500,
   width: 625,
   plugins: plugins
});

在某些情况下可能有用的另一种替代方法是使用IIFE:

var vpath = myarr[0];
jwplayer("player").setup({
   flashplayer: "player.swf",
   config:"config.xml",
   autostart: false,
   allowscriptaccess: "always",
   height: 500,
   width: 625,
   plugins: (function() {
           var obj = {};
           obj['http//www.test.com/image.swf'] = {link:"http://www.test.com/image.jpg"}
           obj['http//www.test.com/'+ vpath +'/proxy.swf'] = {link:"http://www.test.com/link.php"};
       })()
});