通过`bind`将函数参数传递给另一个函数 [英] Pass function arguments into another function via `bind`

查看:39
本文介绍了通过`bind`将函数参数传递给另一个函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题与我的上一个问题有关,所以我将在此处添加与示例几乎相同的代码.

This question is related to my previous question, so I'll add almost same code as example here.

Ease.bezier = function(mX1, mY1, mX2, mY2) {
    return _bezier.processBezier(mX1, mY1, mX2, mY2);
};

var _bezier = Ease.bezier.prototype;

_bezier.processBezier = function (mX1, mY1, mX2, mY2) {
   return _bezier.render; // this is where I need the `this`, mX1, mY1, mX2, mY2 to be passed into the next function
};

_bezier.render = function(aX){ //the aX value here comes from another object
    var mX1 = [bound function attributes[1]]; // I think you can understand what I mean here
    if (mX1 === mY1 && mX2 === mY2) return aX;

    if (aX === 0) return 0;
    if (aX === 1) return 1; 
    return _bezier.computeBezier(_bezier.gx(aX), mY1, mY2);     
};

现在我需要知道我是否可以以某种方式绑定这两个函数而不影响来自另一个对象的 aX 值并可以访问 thismX1, mY1, mX2, mY2 参数进入第二个函数.

Now I need to know if I can bind the two functions somehow without affecting the aX value coming from another object and having access to the this, and mX1, mY1, mX2, mY2 arguments into the second function.

有可能吗?我该怎么做?

Is it possible? How can I do it?

推荐答案

愿您可以使用 arguments 这样的对象 ??

May you can use the arguments object like this ??

_bezier.processBezier = function (mX1, mY1, mX2, mY2) {
  return _bezier.render.bind(this, arguments); // <--- bind all the arguments and the context "this"
};

_bezier.render = function(){ // <--- aX is not required anymore instead use arguments object
  var args = arguments[0]; // <--- this corresponds to [mX1, mY1, mX2, mY2]
  var aX = arguments[1]; // <--- this corresponds to aX now
  if (args[0] === args[1] && args[2] === args[3]) return aX; // <--- notice args object here

  if (aX === 0) return 0;
  if (aX === 1) return 1; 
  return _bezier.computeBezier(_bezier.gx(aX), mY1, mY2);     
};

这篇关于通过`bind`将函数参数传递给另一个函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆