add file:ES5中的一些扩展
This commit is contained in:
@@ -52,7 +52,7 @@ JS提供的绝大多数函数以及我们自己创建的所有函数,都可以
|
||||
### call()和apply()的区别
|
||||
|
||||
|
||||
call()和apply()方法都可以将实参在对象之后依次传递,但是apply()方法需要将实参封装到一个**数组**中统一传递。
|
||||
call()和apply()方法都可以将实参在对象之后依次传递,但是apply()方法需要将实参封装到一个**数组**中统一传递(即使只有实参只有一个,也要放到数组中)。
|
||||
|
||||
比如针对下面这样的代码:
|
||||
|
||||
@@ -90,7 +90,7 @@ call()和apply()方法都可以将实参在对象之后依次传递,但是appl
|
||||
看到区别了吗,call后面的实参与say方法中是一一对应的,而apply传实参时,要封装成一个数组,数组中的元素是和say方法中一一对应的,这就是两者最大的区别。
|
||||
|
||||
|
||||
## call()和apply()的作用
|
||||
### call()和apply()的作用
|
||||
|
||||
- 改变this的指向
|
||||
|
||||
@@ -100,13 +100,14 @@ call()和apply()方法都可以将实参在对象之后依次传递,但是appl
|
||||
|
||||
## bind()
|
||||
|
||||
call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,因此后面还需要()来进行调用才可以。
|
||||
- 都能改变this的指向
|
||||
|
||||
bind与call和apply的不同点在于:call或apply会自动执行对应的函数,bind不会执行对应的函数。
|
||||
- call()/apply()是**立即调用函数**
|
||||
|
||||
推荐链接:
|
||||
- bind()是将函数返回,因此后面还需要加`()`才能调用。
|
||||
|
||||
bind()传参的方式和call()一样。
|
||||
|
||||
-
|
||||
|
||||
|
||||
参考链接:
|
||||
|
||||
Reference in New Issue
Block a user