函数三种调用方式(this指向)
函数三种执行模式 : 全局函数 、 对象方法 、 构造函数
this : 谁 调用 我,我就指向谁
1. 全局函数 : this指向window
2. 对象方法 : this指向对象
3. 构造函数 : this指向new创建的空对象
函数调用的上下文模式
了解上下文模式注意点
-
a.函数上下文三个方法:
call()apply()bind(),它们定义在Function构造函数的原型中 -
b.如果将this指向修改为值类型:(number,boolean,string),则函数会自动帮我们包装成对应的引用类型(基本包装类型)
- 值类型:
'123',1,true - 基本包装类型:
String('123'),Number(1),Boolean(true)
- 值类型:
1-函数执行的上下文模式
作用:
可以动态修改函数中的this指向
call() apply() bind()
-
异同点
-
相同之处:都可以修改函数中this指向
-
不同点:传参方式不同
-
call()语法:
函数名.call(this修改后的指向,arg1,arg2…………) -
apply()语法:
函数名.apply(this修改之后的指向,伪数组或者数组)- bind()语法:
函数名.bind(this修改后的指向,arg1,arg2....) - bind()语法并不会立即执行函数,而是返回一个修改指向后的新函数,常用于回调函数
- bind()语法:
-
-
2-函数调用上下文模式注意点
1. 函数上下问执行模式 : 动态修改this
注意点 : 修改的this只能是引用类型
2.如果写的是基本数据类型
string,number,boolean : 自定帮我们转成对应的基本装包类型 new String() Boolean() Number()
如果传的是undefined和null,或者不传。代码不会报错,也不会帮我们修改this,还是原来的window
面试点 this三种指向
this : 谁 调用 我,我就指向谁
1.全局函数 : this指向window
2.对象方法 : this指向对象
3.构造函数 : this指向new创建的空对象