为多个属性调用一次函数

Call a function once for multiple attributes

本文关键字:一次 函数 属性 调用      更新时间:2023-09-26

如何为多个属性调用函数?

像这样:

fillTween (  
  option1.scale, 1; 
  option2.scale, 7; 
  option3.scale, 4; 
  option4.scale, 2; 
)

  function fillTween(attr, y) {
    var tween = new TWEEN.Tween(attr).to({
      y: y
    }, 1000);
    tween.easing(TWEEN.Easing.Elastic.InOut);
    tween.start();
  }
  $("input[name='radiogroup1']").change(function() {

    if ($('#radio1').is(":checked")) {

      fillTween(option1.scale, 1);
      fillTween(option2.scale, 7);
      fillTween(option3.scale, 4);
      fillTween(option4.scale, 2);
      ...
    }
  });

你不能。那里的解决方案只是重写函数以接受参数数组。

function fillTween(attributes) {
  attributes.map(function(x) {
    var attr = x[0];
    var y = x[1];
    var tween = new TWEEN.Tween(attr).to({
      y: y
    }, 1000);
    tween.easing(TWEEN.Easing.Elastic.InOut);
    tween.start();
  })
}

并像这样称呼它:

fillTween ([  
  [option1.scale, 1],
  [option2.scale, 7],
  [option3.scale, 4],
  [option4.scale, 2]
])
如果你不想

修改你的函数和/或可能想对不同的函数做类似的事情,你可以修改函数原型来创建一个新的"多"函数,如下所示:

Function.prototype.multiple = function() {
  for (var i = 1; i < arguments.length; i++) {
    this.apply(arguments[0],arguments[i]);
  }
}

然后,您可以使用以下命令多次调用该函数:

fillTween.multiple(this,
  [ option1.scale, 1 ], 
  [ option2.scale, 7 ],
  [ option3.scale, 4 ],
  [ option4.scale, 2 ] 
);