我在很多地方遇到过一些具有这种模式的代码:
- this.someFunction.call(this,param);
但在我看来,这只是一种更冗长的打字方式
- this.someFunction(param)
该模式有时会出现在作为回调提供的函数内.碰巧使用Backbone,如果相关的话.像这样的东西:
- Backbone.View.extend({
- // other stuff ...
- someFunction: function(param) {
- // ...
- },anotherFunction: function() {
- this.collection.on("some_event",function() {
- this.someFunction.call(this,param);
- });
- }
- });
模式实际上是否具有不等于this.someFunction(param)的效果,还是有人只是担心闭包没有捕获到正确的?
感谢您的任何见解!
解决方法
Does the pattern actually have an effect that isn’t the equivalent of
this.someFunction(param)
?
不,他们确实是一样的.假设this.someFunction是一个从Function.prototype继承.call的函数(但这是挑剔).
看起来有些人过于谨慎,或者代码是一些没有使用过两次的东西.或者作者可能知道this
-context-in-callbacks issue但未能正确处理它.