函数的四种调用模式

来源:互联网 发布:51单片机入门书籍 编辑:程序博客网 时间:2024/06/07 06:21

1.函数模式

  • 函数的定义方式
    • 声明式
    • 表达式
    • Function
  • 单独独立调用的就是函数模式
    • 函数名( 参数 )
  • this 表示全局对象
  • 任何自调用函数都是函数模式

2.方法模式

  • 区分
    • 方法本身就是函数, 但是方法不是单独独立的调用, 而是通过一个对象引导调用.
  • this 表示引导方法的对象

比如:

var length = 10;    function fn() {        console.log( this.length );    }    var obj = {        length: 5,        method: function ( fn ) {            fn();  //函数模式            arguments[ 0 ]();  //方法模式 === method.fn()        }    };    obj.method( fn, 1 ); //方法模式

3.构造器模式

  • 区分
    • 使用 new 关键字引导
  • 执行步骤
var p = new Person();        new 是一个运算符, 专门用来申请创建对象, 创建出来的对象传递给构造函数的 this        利用构造函数对其初始化        function Person () {            this.name = 'jim',            this.age = 19;            this.gender = 'male';        } - ``` - 返回值     - 如果不写 return 语句, 那么 构造函数 默认返回 this     - 如果在构造函数中写上 return 语句, 并紧跟基本类型( return num, return 1223 ). 则忽略返回类型.      - 如果在构造函数中写上 return 语句, 并且紧跟引用类型, 那么构造函数返回该引用类型数据, 而忽略 this - 如果调用构造函数的时候, 构造函数没有参数, 圆括号是可以省略的 - -自己感觉不推荐,毕竟代码的规范性     - var p = new Person;**4.上下文模式** - 语法(区分)     - call 形式   ===   函数名.call( ... )     - apply 形式   === 函数名.apply( ... ) - 使用 apply 进行调用, 如果函数是带有参数的. apply 的第一个参数要么是 null 要么是对象 - **如果是 null 就是函数调用, 如果是 对象就是 方法对象, 该对象就是宿主对象, 后面紧跟一个数组参数, 将函数的参数依次放在数组中.** - call 的不同在于,传入参数的不同,call是不需要数组进行传参

function Person ( name, age, gender ) {
this.name = name;
this.age = age;
this.gender = gender;
}

function Student ( name, age, gender, course ) {    Person.call( this, name, age, gender );    // 把person构造函数的方法属性,给this使用,即Student    this.course = course;}var p = new Student ( 'jim', 19, 'male', '前端' );

“`

0 0