0

我可以调用这样的方法

Func.apply(null,[123]);

如果函数依赖this指针,会抛出异常吗?

4

1 回答 1

0

来自Mozilla 开发网络

这个Arg

this为调用提供的值fun。注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,nullundefined被替换为全局对象,原始值将被装箱。

换句话说,除非函数使用严格模式,否则将使用 thenwindow代替null. 如果它确实使用严格模式,this将是null.

这是否会导致任何异常完全取决于所应用的功能。如果该函数不使用this,则传递任何值都是完全安全的。如果它被视为this一个可能不为 null 的普通对象,则它可能仅在严格模式下失败。如果它依赖于设置的某些属性,那么它很可能会TypeError在严格模式和非严格模式下抛出类似的。创建一个仅在非严格模式下失败的函数也很容易(例如,通过添加显式检查)

(至少有一些)内置数组函数使用显式检查。例如Array.prototype.split(undefined, [1,2,3])在 Chrome 上抛出一个TypeError: Cannot call method 'apply' of undefined

于 2013-02-20T18:03:03.620 回答