为多个属性调用一次函数

时间:2016-01-17 14:00:46

标签: javascript jquery

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

类似:

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);

      ...

    }

  });

2 个答案:

答案 0 :(得分:4)

你不能。解决方案就是重写函数以接受参数数组。

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]
])

答案 1 :(得分:3)

如果您不想修改您的功能和/或可能希望针对不同的功能执行类似的操作,您可以修改功能原型以创建新的"多个"功能如下:

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 ] 
);