美文网首页
js中apply()和call()的区别

js中apply()和call()的区别

作者: 南山码僧 | 来源:发表于2019-11-18 15:43 被阅读0次

    语法:

    apply(obj, arguments[]);  

    call(obj, param_1, param_2, ..., param_n);

    ①:obj代表被调用函数指向的上下文环境, 特别说明 当obj为null时指向的是全局global

    ②:arguments[]和param_1, param_2, ..., param_n代表被调用函数的参数

    简述:

    这两个方法都属于js中Function.prototype上的方法,它是JavaScript引擎内在实现的。也就是说每一个function函数都都具有这两个方法。

    作用:

    都是改变被调用函数的上下文环境

    如:

    function People(name, age) {

        this.name= name;

        this.age= age;

    }

    function Student(name, age, grade) {

        People.call(this, name, age);

        this.grade= grade;

    }

    let student = new Student('小明', 21, '大三');

    console.log(student.name+ student.age+ student.grade);

    将People的上下文环境指向了Student

    区别:

    两者的参数类型不一样,

    ① ~ call接收的是单个参数对象

    ② ~ apply接受的是参数数组 

    妙用:

    let arr = [1, 2, 3, 4, 5];

    Math.max.apply(null, arr);

    Math.min.apply(null, arr);

    相关文章

      网友评论

          本文标题:js中apply()和call()的区别

          本文链接:https://www.haomeiwen.com/subject/pnhbictx.html