apply和call方法
apply方法:
函数名.apply(对象,[参数1,参数2...]);
方法名字.apply(对象,[参数1,参数2...]);
call方法:
函数名.call(对象,参数1,参数2...);
方法名字.call(对象,参数1,参数2...);
作用:改变this指向
bind方法:复制函数时,改变this指向,所以需要接收复制的结果,重新调用
在函数中使用:
var ff= 函数名.bind(对象,参数1,参数2...);
ff();
在对象中使用:
var ff = 实例对象.方法名.bind(对象,参数1,参数2...);
ff();
函数中的成员
arguments: 实参的集合,是一个伪数组
caller: 调用这个方法的函数
length: 形参的个数
name: 函数的名字
高阶函数
1,函数作为参数使用,就是高阶函数
//fn是实参,作为函数使用
function f1(fn) {
console.log("今天真开心");
fn();
}
//调用时,传一个匿名函数
/!*f1(function () {
console.log("明天放假");
});*!/
//调用时,传一个命名函数
function f2() {
console.log("但是有作业,不开心");
}
f1(f2);
2,函数作为返回值使用,就是高阶函数
function f1() {
console.log("第一个");
return function () {
console.log("第二个");
}
}
var ff= new f1();
ff();