我可以调用这样的方法
Func.apply(null,[123]);
如果函数依赖于this
指针,它会抛出异常吗?
答案 0 :(得分:0)
来自Mozilla Development Network:
thisArg
为
this
的调用提供fun
的值。请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,null
和undefined
将替换为全局对象,原始值将盒装。
换句话说,除非函数使用严格模式,否则将使用window
代替null
。如果它确实使用严格模式,this
将为null
。
是否导致任何异常完全取决于所应用的功能。如果该函数不使用this
,则传递任何值都是完全安全的。如果它将this
视为可能不为null的普通对象,则它可能仅在严格模式下失败。如果它依赖于某些属性被设置,则可能会在严格模式和非严格模式下抛出TypeError
。创建一个仅在非严格模式下失败的函数(例如通过添加显式检查)非常容易。
(至少一些)内置数组函数使用显式检查。例如,Chrome上的Array.prototype.split(undefined, [1,2,3])
会引发TypeError: Cannot call method 'apply' of undefined