我正在看一些看起来像的代码
this.f.call(this);
或者在其他一些情况下
this.someObj.f.call(this.someObj);
这些和有什么区别吗
this.f();
this.someObj.f();
在任何情况下行为会有所不同吗?(例如,如果this
orsomeObj
为 null 或者实际上不是一个对象,或者f
实际上不是一个函数,那么行为是否不同?我想不出一种方法,一个会抛出异常而另一个不会,但是也许我错过了什么......)
编辑:澄清一下:是的,我知道它.call
可以用来指定函数看到的值,它在你this
不能使用obj.f()
语法的情况下很有用(因为f
不是obj
知道是不是)。我的问题不是关于.call
一般情况下的工作方式。我的问题是关于这种.call
情况,我看不到使用对象属性语法 的明显原因。