当this
&{ Function.prototype.call()
可以是Function.prototype.apply()
或null
?
以下面的代码为例:
undefined
来自MDN Function.prototype.apply()。
的示例编辑: 原始问题有第三部分和另一个例子:
当.call()&的
var numbers = [5, 6, 2, 3, 7]; var min = Math.min.apply(null, numbers);
值时.apply()可以是this
或null
,甚至不是?以
为例Array.prototype.slice.call(auguements);
我认为没有这个价值,但感谢@ guest271314现在我知道那是愚蠢的
答案 0 :(得分:1)
仅在严格模式下可以是null
或undefined
。
在草率模式下,它们将被忽略,您将获得全局对象。
function logThis() {
console.log(this === window); // true :(
}
logThis.call(undefined);
logThis.call(null);
logThis.apply(undefined);
logThis.apply(null);
这是OrdinaryCallBindThis中使用的[[Call]]定义的。{3}}
- 如果 thisMode 是严格的,请将 thisValue thisArgument 。
- 否则
醇>
- 如果 thisArgument 是 null 或 undefined ,那么
- 让 thisValue 成为 calleeRealm 。[[globalThis]]。
- 否则
- 让 thisValue 为ToObject( thisArgument )。
如果您想知道调用具有null
或undefined
this
值的函数是否会破坏它,那么您需要知道该函数将尝试使用{ {1}}值。
在您的示例中,this
完全忽略Math.min
值,因此您传递的值无关紧要。但是,由于它是this
方法,因此传递Math
代替Math
或null
可能是有意义的。
undefined