语法:
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);
网友评论