参数this在面向对象编程中非常重要,它的值取决于 调用的模式。
前言:
函数一般分为四种调用模式:
1.函数调用模式: 一般独立函数调用
2.方法调用模式: 作为方法调用,一定要有一个引导对象(宿主对象)
3.构造器调用模式: 一定用来初始化对象,有 new 引导,return 可以重定向
4.上下文调用模式: apple 或 call
函数调用模式
函数的定义方式
- 声明式
- 表达式式
- Function
单独独立调用的就是函数
函数名(参数);
函数调用模式中,this 表示 全局对象 window
方法调用模式
方法本身就是函数,但是方法不是单独独立的使用,而是通过对象引导调用
对象.方法( 参数 );
方法调用模式中, this 指向引导方法的对象
方法调用一定要有宿主对象
方法一定是 某个对象 的 方法。对象可以是任何对象
|
|
构造器调用模式(构造函数模式 或 构造方法模式)
- constructor
- 特征: 在函数前面用 new 来引导
- this 的含义: 刚刚被创建出来的实例对象
- 注意返回值
- 调用构造函数时,无参可省略括号
- 执行步骤
|
|
构造函数小结
(1) 构造函数无参数,可以省略括号
|
|
(2) 创建对象并直接调用 其方法
|
|
上下文调用模式
- 特征: 一定是由一个对象引导调用
- this 的含义: 引导调用的这个对象
-> 上下文调用模式
-> 术语 上下文: 就是 this.
-> 上下文调用模式有标准的调用语法:
函数名.call( ... )
函数名.apply( ... )
-> 上下文调用模式这两个形式功能一模一样. 只是参数的形式不同.
-> 上下文调用之所以称为上下文调用, 是因为我们允许利用参数来改变 this 的含义.
|
|
说明:
在利用上下文调用的时候, call 或 apply 的第 0 个参数表示就是 函数中 this 的指向
如果传入 null 或 undefined 或不传, this 就是 window
如果传入的是 对象, this 就是传入对象
如果传入的是 基本类型( 数字, 字符串, boolean )就会将基本类型转换成对应包装类型, 赋值给 this
-> 关于参数
call 在调用的时候, 函数的参数散列的在 call 中提供.
apply 在调用的时候, 函数的参数以数组的形式提供.
|
|