Function.prototype.bind()

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

fun.bind(thisArg[,arg1[,arg2[, ...]]])

参数:

thisArg:当绑定函数被调用时,该参数会作为原函数运行时的this 指向。当使用new 操作符调用绑定函数时,该参数无效。

arg1, arg2, ... : 当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法。

返回值:

 返回由指定的this值和初始化参数改造的原函数拷贝


创建绑定函数

this.x = 9;

var module = {

    x: 81,

    getX: function() { return this.x; }

};

module.getX(); // 返回 81

var retrieveX = module.getX;

retrieveX(); // 返回 9, 在这种情况下,"this"指向全局作用域

var boundGetX = retrieveX.bind(module); // 创建一个新函数,将"this"绑定到module对象

boundGetX(); // 返回 81

偏函数

bind()的另一个最简单的用法是使一个函数拥有预设的初始参数

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]

你可能感兴趣的:(Function.prototype.bind())