函数调用的详细讲解:函数的四种调用方式你掌握了几种呢

人气:227 ℃/2023-12-10 07:38:50

关注小编 私信01,获取C/C 相关资料!因为有人私信小编说想看函数调用,小编就整理了一下,希望对你们有帮助! 函数的四种调用方式

函数有下列调用模式

  1. 函数调用模式
  2. 方法调用模式
  3. 构造器模式
  4. 上下文模式

1. 函数调用 模式

要调用,就肯定要先定义,函数的定义方式:

  1. 声明式: function fuc() {}
  2. 表达式式: var func = function() {};
  3. Function: new Function( ‘参数’,…,’函数体’ );

单独独立调用的,就是函数调用模式,即 函数名( 参数 ),不能加任何其他的东西, 对象 o.fuc() 就不是了。

在函数调用模式中, this 表示全局对象 window

任何自调用函数都是函数模式。

2. 方法调用 模式 method

所谓方法调用,就是用对象的方法调用。方法是什么,方法本身就是函数,但是,方法不是单独独立的,而是要通过一个对象引导来调用。

就是说方法对象一定要有宿主对象

对象.方法(参数)

this表示引导方法的对象,就是指宿主对象

对比-函数调用模式:

  1. 方法调用模式是不是独立的,需要宿主,而函数调用模式是独立的
  2. 方法调用模式方式:obj.fuc(); 函数调用模式方式: fuc();
  3. 方法调用模式中,this指宿主。而函数调用模式中 this 指 全局对象window

美团的一道面试题

解析:

  1. fn() 前面没有引导对象,是函数调用模式, this是全局对象,输出 10
  2. arguments[ 0 ](),arguments是一个伪数组对象, 这里调用相当于通过数组的索引来调用.
  3. 这里引导对象即宿主就是 arguments对象。
  4. 所以,执行时,this 就是指 arguments,由于传了两个参数,所以 输出为 arguments.length 就是 2

3. 构造器模式(构造函数模式, 构造方法模式)

constructor

  1. 特点: 使用 new 关键字引导
  2. 执行步骤:var p = new Person();
  3. new 是一个运算符, 专门用来申请创建对象, 创建出来的对象传递给构造函数的 this。然后利用构造函数对其初始化。

执行完 new 进入构造函数时, p 对象的原型 就指向了 构造函数 Person

而 构造时,this 指的的是 p 对象,是通过对象动态添加属性来构造的

小贴士:如果调用构造函数的时候, 构造函数没有参数, 圆括号是可以省略的。

  1. ↑ 不传参,可以简写,不影响构造
  2. 返回值
  3. 不写 return 语句, 那么 构造函数 默认返回 this
  4. 在构造函数 return 基本类型( return num, return 1223 ). 则忽略返回类型.
  5. 在构造函数 return 引用类型, 那么构造函数返回该引用类型数据, 而忽略 this

↑ 忽略了 123,返回 this 对象, 指向构建的实例

↑ 忽略了 this,返回 { ‘peter’: ‘nihao’ } 对象

构造函数结合性

  1. 如果构造函数没有参数, 可以省略 圆括号
  2. var p = new Person;
  3. 如果希望创建对象并直接调用其方法
  4. ( new Person () ).sayHello()
  5. -> 可以省略调整结核性的圆括号 new Person().sayHello()
  6. -> 如果想要省略构造函数的圆括号, 就必须添加结核性的圆括号 (new Person).sayHello()

面试题

一道面试题,大家可以自己尝试先做一下,再看下面的答案和解析

请问顺序执行下面代码,会怎样 alert

预解析,简化后的代码,以及答案

全部解析就不放上来了,自己好好琢磨一下。

4. 上下文调用模式

就是 环境调用模式 => 在不同环境下的不同调用模式

简单说就是统一一种格式, 可以实现 函数模式与方法模式

-> 语法(区分)

  1. call 形式, 函数名.call( … )
  2. apply 形式, 函数名.apply( … )

这两种形式功能完全一样, 唯一不同的是参数的形式. 先学习 apply, 再来看 call 形式

apply方法的调用形式

存在上下文调用的目的就是为了实现方法借用,且不会污染对象。

带有参数的函数如何实现上下文调用?

使用 apply 进行调用, 如果函数是带有参数的. apply 的第一个参数要么是 null 要么是对象

  1. 如果是 null 就是函数调用
  2. 如果是 对象就是 方法调用, 该对象就是宿主对象, 后面紧跟一个数组参数, 将函数所有的参数依次放在数组中.

百科

More+
首页/电脑版/网名
© 2026 NiBaKu.Com All Rights Reserved.