js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context)
call
call([thisObj[,arg1[, arg2[, [,.argN]]]]]...将被用作当前对象的对象。
arg1, arg2, argN ..
可选项。将被传递方法参数序列。...apply
apply([thisObj[,arg1, arg2, argN]])
apply和call类似,区别只是第二个参数,是一个数组(或类数组)的形式
bind
bind(thisArg [,...arg1 [, arg2, …]]);
bind 也是改变某个方法的执行环境,区别也在于第二个参数(也是一个个的参数形式)和“返回值”的特性。
..._apply;
}
};
apply的模拟:
apply也类似,因为第二个参数是类数组的形式,所以也要变换为数组
// 第二个参数 args是为了方便使用
Function.prototype.Apply