Function.prototype.bind
执行会返回一个新的函数,并将this关键字设置为指定的值。并可以在执行该返回的函数之前传入参数。
语法
fun.bind(thisArg[, arg1[, arg2[, ...]]])
thisArg
:表示返回的函数中this的指向。[, arg1[, arg2[, ...]]]
:表明参数是可选的。
使用方法
绑定this
var obj = {
name: 'real',
getName: function() {
console.log(this.name)
}
}
var name = 'window';
obj.getName(); // "real"
var getName = obj.getName;
getName(); // "window";
var getName2 = obj.getName.bind(obj);
getName2(); // "real";
上述getName2
方法中this
指向了obj
。
偏函数(提前传入参数)
var log = function log(...args) {
console.log(args);
}
log(1,2,3); // [1, 2, 3]
var log2 = log.bind(null, 0);
log2(1,2,3); // [0, 1, 2, 3]
提前传入函数0。
结合setTimeout
setTimeout(fn, delay)
。其中fn
中的this
默认指向的是全局window/global
。
function Foo(name){
this.name = name; };
Foo.prototype.getName =