Javascript 对象扩展语法的Mo.js替代方案

Javascript 对象扩展语法的Mo.js替代方案,javascript,html,google-chrome,google-chrome-devtools,Javascript,Html,Google Chrome,Google Chrome Devtools,我正在学习mo.js教程,并且正在处理循环单击突发部分 const OPTS = { fill: 'none', radius: 25, strokeWidth: { 50 : 0 }, scale: { 0: 1 }, angle: { 'rand(-35, -70)': 0 }, duration: 500, left: 0, top: 0, easing:

我正在学习mo.js教程,并且正在处理循环单击突发部分

const OPTS = {
  fill:           'none',
  radius:         25,
  strokeWidth:    { 50 : 0 },
  scale:          { 0: 1 },
  angle:          { 'rand(-35, -70)': 0 },
  duration:       500,
  left: 0,        top: 0,
  easing: 'cubic.out'
};

const circle1 = new mojs.Shape({
  ...OPTS,
  stroke:         'cyan',
});

const circle2 = new mojs.Shape({
  ...OPTS,
  radius:         { 0 : 15 },
  strokeWidth:    { 30: 0 },
  stroke:         'magenta',
  delay:          'rand(75, 150)'
});
我使用的是VSCode V1.7.2,它在支持
语法时遇到问题。我在Chrome54.0.2840.99中也遇到了控制台错误。有没有一种等效的格式可以用来解决这个问题?我在想象类似于
options:OPTS
的东西会起作用,但我在文档或互联网上没有看到任何帮助我的东西

显然,我可以在循环声明中复制OPTS中的属性,但是为了简单起见,我想知道如何使用OPTS变量

我会标记mo.js,但我没有足够的声誉来创建新标记


谢谢

您可以使用
Object.assign()

const circle2 = new mojs.Shape(Object.assign({}, OPTS, {
  radius:         { 0 : 15 },
  strokeWidth:    { 30: 0 },
  stroke:         'magenta',
  delay:          'rand(75, 150)'
}));

对象扩展仍然是一个建议,linter不认识语法。这并不意味着它不起作用。例如,如果您将babel与(或0、1、2个预设)一起使用,即使vscode显示警告,它也可以工作。我不熟悉vscode,但您可能可以添加对该功能的支持。

您可以使用
Object.assign()

const circle2 = new mojs.Shape(Object.assign({}, OPTS, {
  radius:         { 0 : 15 },
  strokeWidth:    { 30: 0 },
  stroke:         'magenta',
  delay:          'rand(75, 150)'
}));

对象扩展仍然是一个建议,linter不认识语法。这并不意味着它不起作用。例如,如果您将babel与(或0、1、2个预设)一起使用,即使vscode显示警告,它也可以工作。我不熟悉vscode,但您可能可以添加对该功能的支持。

您的订单搞错了
OPTS
应该首先保留相同的功能,但是您还需要一个空白的
{}
,以避免修改
OPTS
。谢谢。我还没考虑过超控,你的命令搞错了
OPTS
应该首先保留相同的功能,但是您还需要一个空白的
{}
,以避免修改
OPTS
。谢谢。我没有考虑过超控。