奇怪的 JavaScript 语句,这是什么意思?

问题描述 投票:0回答:8

我看到这段代码,它在做什么?

var obj = this;
javascript variable-declaration
8个回答
5
投票

它只是存储

this
对象的当前引用,以供将来使用。它很有用,因为在 JS 中
this
的值取决于上下文。


3
投票

它保存对当前上下文中任何

this
的引用,以便稍后使用。


1
投票

这是设置当前一级函数的本地副本。

这在 jquery 中被大量使用,因为当您使用选择器时,这具有不同的含义。

说我有一个

function Person() {
   this.name = "gnostus";
}

我需要从 jquery 选择器内部访问名称,这将成为一个 html 元素,我会将我的对象存储到一个复制变量中,并使用

obj.name
代替
this.name
当我在 jquery 上下文中时。


1
投票

这取决于该声明所在的位置。它分配给变量“obj”对当前对象的引用。

例如以下代码将打开一个警报窗口并显示[Window object]。这是因为我们检查主体区域中“this”的值(不在任何对象事件处理程序等内部)

<html>
    <head>
    </head>
    <body>

    <script type="text/javascript">

        alert(this);
    </script>   

    </body>
</html>

1
投票

它创建一个变量“obj”并将其设置为当前上下文。

因此,例如,如果它处于全局级别,

this
将是当前的 DOM 窗口。


0
投票
var obj = this;

说明,将 obj 分配给当前作用域的父级。

我几个月前第一次阅读这篇文章,以了解关键字“this”。

http://justin.harmonize.fm/index.php/2009/09/an-introduction-to-javascripts-this/


0
投票

this 关键字用于引用函数的所有者,或者使用 this 关键字的变量。 如需详细了解,请访问 http://www.quirksmode.org/js/this.html


0
投票

我能想到的这种代码唯一有意义的上下文是使当前上下文(this)在闭包内可用。

所以代码会是这样的:

var obj = this;
setTimeout(function() {
    obj.someMethod();
}, 1000);

这将在 1 秒后调用当前上下文对象上的方法“someMethod”。

© www.soinside.com 2019 - 2024. All rights reserved.