Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

第一篇技术博客:不要滥用this绑定

$
0
0

我的博客在: https://zhanzhenzhen.github.io/2016_08_14您可以在我的网站内评论,这样如果我回复了您,您将收到Email通知。

不要滥用this绑定

——讨厌的jQuery风格

这是我的第一篇技术博客。

很久以前就用过jQuery的程序员一定不会对.map这个方法陌生,它的用法是这样的:

$(":checkbox")
.map(function() {
    return this.id;
})

因为我是从C#转到JavaScript的,觉得在JS中可以让this来担任参数的角色,会把概念搞乱,所以我一开始就很不喜欢这种做法。而且,现在有了ES2015的箭头函数,局限性更大了,因为它将导致无法使用箭头函数:

$(":checkbox")
.map(() => this.id)

上述代码是错误的,因为箭头函数中的this是不可自定义的,它始终绑定为外层的this

而如果改成参数风格的话,就可以使用箭头函数了:

$(":checkbox")
.map(m => m.id)

遗憾的是jQuery不支持这种风格。

总之,我觉得让this的含义可变是JavaScript的错误设计,因为它会导致滥用,但好在我们可以避免,办法就是:让它只出现在“类的方法”或“对象的方法”的内部,不要在其他任何地方使用this,也尽量不要使用jQuery这样的库。


Viewing all articles
Browse latest Browse all 14821

Trending Articles