Javascript 通过“bind”将函数参数传递给另一个函数`

Javascript 通过“bind”将函数参数传递给另一个函数`,javascript,arguments,bind,Javascript,Arguments,Bind,这个问题与我的有关,所以我将添加与这里的示例几乎相同的代码 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.rende

这个问题与我的有关,所以我将添加与这里的示例几乎相同的代码

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
值,并且可以访问
this
,并将
mX1,mY1,mX2,mY2
参数绑定到第二个函数中

可能吗?我该怎么做呢?

你可以像这样使用这个物体吗

_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);     
};
\u bezier.processBezier=函数(mX1、mY1、mX2、mY2){

return _bezier.render.bind(this,arguments);//应该返回什么
processBezier
函数的结果,
render
函数的一个数字,它位于带有级数和时间轴的bezier图中。您所说的“并有权访问
this
”是什么意思?这不正是您上一个问题的答案吗?这里没有足够的信息。什么是
.gx()
方法?什么是
computeBezier()
方法看起来像什么?使用这个类的示例代码是什么?不过有一个提示:在方法中使用
\u bezier
的地方可能都应该是
这个
,因为你想引用对象的当前实例,而不仅仅是原型上的裸函数。@Bergi我意识到我应该在问上一个问题之前,我已经知道了关于绑定的内容,这正是我所需要的,下面回答的人给出了一个非常好的答案。非常感谢感谢,控制台日志显示了非常好的答案。我确认,你的答案是有效的。积分当之无愧,我希望我能获得更多的声誉积分:)我很高兴帮助:)另一个快速问题。有没有更快的方法来实现这一点?我读过一些东西,一个闭包可以比
bind
快两倍,你知道这是怎么回事吗?