对this
和null
方法使用thisArg
和apply()
作为call()
上下文有什么区别?
function getMax(arr) {
return Math.max.apply(null, arr);
}
function getMax(arr) {
return Math.max.apply(this, arr);
}
答案 0 :(得分:1)
max
是静态函数,因此您传递的内容与this
无关,因为未使用this
。所以你的功能是等价的。
答案 1 :(得分:0)
使用this
的重要意义是在调用方法时设置当前上下文。例如:
function Human() {
this.getMax = function getMax(arr) {
console.log(this.constructor);
return Math.max.apply(this, arr);
}
}
var human = new Human();
human.getMax([1,2]);
这里,console语句将this.constructor作为Human。如果不是这样,你就会将上下文作为窗口。
对于第一种情况,当您传递null时,它不会传递上下文。这可以在这里工作,因为Math.max期望以逗号分隔格式a,b,c的参数,当你执行.apply时正在处理。