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

2019-11-18  本文已影响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);

上一篇下一篇

猜你喜欢

热点阅读