javascript - FastClick源码的一个小问题?
怪我咯
怪我咯 2017-04-11 10:58:02
0
2
363

FastClick构造器中,有这么一段代码:

var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];
var context = this;
for (var i = 0, l = methods.length; i < l; i++) {
     context[methods[i]] = bind(context[methods[i]], context);
}

github上代码地址为:FastClick代码
我的疑问是:onMouse等方法在FastClick的prototype中了,按说context都能访问到这些方法,而且this指向也是FastClick的实例化对象,为什么还要执行:

context[methods[i]] = bind(context[methods[i]], context);

这句代码呢?毫无意义呀?哪位大神帮忙解答一下。

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(2)
左手右手慢动作

应该是不确认调用方的调用方式,简单来说,this是指向调用这个方法时的调用方的,写个简单demo看下

var a = {b:1};
var testFun = function(){console.log(this.b)};
a.test = testFun;
a.test() // 1

var newTest = a.test;
newTest() // undefined,这时候this指向的不是a了

a.test = testFun.bind(a);
var newTest2 = a.test;
newTest2(); // 1 这时候this就绑定到a上了
刘奇

我把题主标注的部分删除后,跑了他给的几个例子,没有发现错误。
可能是作者写习惯了。。。。
也有可能是有例外情况,那需要去查一下issues.
我也题主扩散一下问题,看看能不能得到合理的解释。

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!