是否在子函数内部引用父(this)坏习惯?

时间:2014-01-04 11:03:28

标签: javascript

上下文

在典型的JavaScript OO类中,例如

function parent(){
     this.a = "parent";
     this.child = function(){
          console.log(this.a); //undefined
     }
}

现在我知道你可以使用:

引用父这个
 var that = this;

问题

这被认为是好的,坏的还是中立的做法?我想也许可以指导我在性能或可能的替代方法方面寻找的东西。

注意:我已经阅读了其他一些stackoverflow问题/答案,但他们更多地要求如何使用它而不是使用它的问题,如果有的话。

1 个答案:

答案 0 :(得分:3)

  

这被认为是好的,坏的还是中立的做法?

这是完全正常的做法。它是JavaScript工作原理的基础。只要它适合这种情况,它就没有错。


主观

使用that这是我的一个小小的烦恼。称之为that毫无意义。然而,这是常见的做法。 :-)我经常使用self,这很常见(不像that那么常见)。正如评论中指出的那样,稍微会让您打开调试麻烦,因为self是浏览器上的全局(类似于window)。我常见的另一个方法是选择一个与事实实际相关的名词,这增加了语义价值。例如,如果this引用Whatsit个实例,我可以使用whatsittheWhatsit。下面的另一个建议是_this(带有下划线)。一个体面的IDE将与this的颜色不同,从而降低了误读它的可能性,但是存在这种担忧。

但这是纯粹一种风格选择,that是很多人的选择。