我看到这段代码,它在做什么?
var obj = this;
它只是存储
this
对象的当前引用,以供将来使用。它很有用,因为在 JS 中 this
的值取决于上下文。
它保存对当前上下文中任何
this
的引用,以便稍后使用。
这是设置当前一级函数的本地副本。
这在 jquery 中被大量使用,因为当您使用选择器时,这具有不同的含义。
说我有一个
function Person() {
this.name = "gnostus";
}
我需要从 jquery 选择器内部访问名称,这将成为一个 html 元素,我会将我的对象存储到一个复制变量中,并使用
obj.name
代替 this.name
当我在 jquery 上下文中时。
这取决于该声明所在的位置。它分配给变量“obj”对当前对象的引用。
例如以下代码将打开一个警报窗口并显示[Window object]。这是因为我们检查主体区域中“this”的值(不在任何对象事件处理程序等内部)
<html>
<head>
</head>
<body>
<script type="text/javascript">
alert(this);
</script>
</body>
</html>
它创建一个变量“obj”并将其设置为当前上下文。
因此,例如,如果它处于全局级别,
this
将是当前的 DOM 窗口。
var obj = this;
说明,将 obj 分配给当前作用域的父级。
我几个月前第一次阅读这篇文章,以了解关键字“this”。
http://justin.harmonize.fm/index.php/2009/09/an-introduction-to-javascripts-this/
this 关键字用于引用函数的所有者,或者使用 this 关键字的变量。 如需详细了解,请访问 http://www.quirksmode.org/js/this.html
我能想到的这种代码唯一有意义的上下文是使当前上下文(this)在闭包内可用。
所以代码会是这样的:
var obj = this;
setTimeout(function() {
obj.someMethod();
}, 1000);
这将在 1 秒后调用当前上下文对象上的方法“someMethod”。