【发布时间】:2012-09-25 13:57:57
【问题描述】:
以这种方式分配变量的目的是在存在嵌套作用域时提供对父作用域内活动对象的访问。我认为这是相当糟糕的形式;为什么不为父目标对象提供一个更有意义的变量名?
例如,如果我们选择页面中的所有 div,然后遍历它们。在每个 div 中,我们选择目标 div 中的所有锚链接,在嵌套循环中迭代这些锚链接。在此示例中,外部范围的“this”是当前目标 div,内部范围的“this”将是当前目标锚链接。
要在外部范围内创建一个挂钩到活动目标 div,我通常会看到:
var that = this;
即使在 Crockford 的 Good-Parts 书中,他也使用了这个作业。
冒着因为质疑这种技术而出丑的风险,为什么不做一些更有意义的事情,比如
var outerDiv = this;
你怎么看?
【问题讨论】:
-
这只是一个命名约定。每次我看到
self和that的东西时,我往往会知道它的含义,而如果我看到outerDiv,我就必须搜索它是否是一个局部变量。 -
@sachleen:你的意思是,“你可以做到 this...” :)
-
重点是不要获取外部对象的范围。它是在“this”已经退出时捕获当前对象的范围以供以后使用。故事是这样的:您加载页面,对象运行并完成。它表示当用户单击某个按钮时,会调用该对象的函数。但是您不能再使用“this”,因为该函数稍后运行,在原始对象已经完成之后。它的“这个”是窗口什么的。因此,我们使用 get a "that" 或 "self" 或 "me" 作为对首先创建稍后运行函数的对象的引用。希望对您有所帮助。
标签: javascript scope nested this