重点:
apply/call 都可以改变 this 的指向
apply 和 call 的使用方法
apply 和 call 方法中如果没有传入参数,或者是传入的是 null,那么调用该方法的函数对象中的 this 就是默认的 window
- apply 的使用语法
- 函数名字.apply(对象,[参数 1,参数 2,…]);
- 方法名字.apply(对象,[参数 1,参数 2,…]);
- call 的使用语法
- 函数名字.call(对象,参数 1,参数 2,…);
- 方法名字.call(对象,参数 1,参数 2,…);
- 作用:改变 this 的指向
- 不同的地方:参数传递的方式是不一样的
- 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用 apply 或者是 call 的方法改变 this 的指向
bind
bind 是用来复制一份
使用的语法:
- 函数名字.bind(对象,参数 1,参数 2,…);—->返回值是复制之后的这个函数
- 方法名字.bind(对象,参数 1,参数 2,…);—->返回值是复制之后的这个方法
函数
函数的值
函数中有一个 name 属性—–>函数的名字,name 属性是只读的,不能修改
函数中有一个 arguments 属性—>实参的个数
函数中有一个 length 属性—->函数定义的时候形参的个数
函数中有一个 caller 属性—->调用(f1 函数在 f2 函数中调用的,所以,此时调用者就是 f2)
函数作为参数的时候,如果是命名函数,那么只传入命名函数的名字,没有括号
函数可作为返回值
练习代码
apply/call
1 | //案例一 |
bind
1 | //通过对象,调用方法,产生随机数 |
函数
函数作为参数使用
1 | //案例一 |
函数作为返回值使用
1 | //案例一 |