它將使在使用本產品或者空在給上下文應用或致電使用「空」 VS「這」在申請或撥打功能的JavaScript
function getMax(arr) {
return Math.max.apply(null, arr);
}
function getMax(arr) {
return Math.max.apply(this, arr);
}
它將使在使用本產品或者空在給上下文應用或致電使用「空」 VS「這」在申請或撥打功能的JavaScript
function getMax(arr) {
return Math.max.apply(null, arr);
}
function getMax(arr) {
return Math.max.apply(this, arr);
}
max
是靜態功能,所以不管你什麼傳遞作爲這個。反正這個數值沒有用。
所以,你的情況下一個功能是等價
function getMax(arr) {
return Math.max.apply(null, arr);
}
function getMax(arr) {
return Math.max.apply(this, arr);
}
使用這是建設的重大意義的差異調用方法時設置當前上下文。例如:
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]);
在這裏,控制檯語句會將this.constructor作爲Human輸出。否則,你會得到上下文作爲窗口。
對於第一種情況,當您傳遞null時,它不會傳遞上下文。這在這裏有用,因爲Math.max期望以逗號分隔格式a,b,c,當你執行.apply時正在處理它。
感謝gauravmuk,進一步我有查詢時,空不會給任何情況下則可以用於什麼目的,因爲申請的主要目的是給上下文。 – Enthu
謝謝,但假設,而不是一個stactic函數一些其他函數在那裏有什麼用途通過這個或無效和差異,請原諒我是天真的,如果解釋會有很大的幫助。 – Enthu
@Harsh,來自spec:[_ thisArg的值**作爲這個值傳遞,沒有修改**。這是從版本3開始的一個變化,其中未定義或null的thisArg被全局對象替換,並且ToObject被應用於所有其他值,並且該結果作爲此值傳遞。即使thisArg未經修改就被傳遞,非嚴格函數在進入函數時仍然執行這些轉換._](http://ecma-international.org/ecma-262/7.0/#sec-function.prototype.call ) – Grundy