当我使用bind时,我应该改变对Javascript函数的调用

Is there any way I should change my call to a Javascript function when I use bind?

本文关键字:改变 Javascript 函数 调用 我应该 bind      更新时间:2023-09-26

当我这样定义一个函数时:

  var town = 'Liverpool';
  foo = function(x,y){
           alert(x);
           alert(y);
           alert(this.town)
        }.bind(this);

我已经了解到,如果我使用IE9及以上浏览器,将"this"传递到函数的一种方法是使用.bind(this)。然而,如果我这样做,是否意味着我需要改变定义函数的x和y参数的方式?

你可以像foo(argument1, argument2)那样调用这个函数

bind()方法创建一个新函数,当调用该函数时,将其this关键字设置为所提供的值,并在调用新函数时提供的任何参数之前设置给定的参数序列。

你可以传递多个参数给bind(),使函数具有预先指定的初始参数。这些参数(如果有的话)跟随所提供的this值,然后插入到传递给目标函数的参数的开头,后面是传递给绑定函数的参数,无论何时调用绑定函数。

function list() {
  return Array.prototype.slice.call(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
//  Create a function with a preset leading argument
var leadingThirtysevenList = list.bind(undefined, 37);
var list2 = leadingThirtysevenList(); // [37]
var list3 = leadingThirtysevenList(1, 2, 3); // [37, 1, 2, 3]

进一步阅读

MDN链接