调用方法将使此对象为null

时间:2013-02-20 17:49:10

标签: javascript

我可以调用这样的方法

Func.apply(null,[123]);

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

1 个答案:

答案 0 :(得分:0)

来自Mozilla Development Network

  

thisArg

     

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

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

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

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