奇怪的JavaScript声明,这是什么意思?

时间:2011-03-28 15:37:53

标签: javascript

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

var obj = this;

8 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

它保存了对当前上下文中this的引用,因此可以在以后使用。

答案 2 :(得分:1)

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

因此,例如,如果它处于全局级别this将是当前的DOM窗口。

答案 3 :(得分:1)

即设置当前设置的第一类函数的本地副本。

这在jquery中使用ALOT,因为当你使用选择器时它会有不同的含义。

说我有一个

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

我需要从jquery选择器内部访问名称,这将成为一个html元素,我将我的对象存储到一个复制变量中,当我在里面时使用obj.name代替this.name jquery上下文。

答案 4 :(得分:1)

这取决于此声明的位置。它将变量“obj”赋值给当前对象。

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

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

    <script type="text/javascript">

        alert(this);
    </script>   

    </body>
</html>

答案 5 :(得分:0)

var obj = this;

正在陈述,将obj指定给当前范围的父级。

几个月前我首先阅读了这篇文章,以便处理关键字“this”。

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

所以代码就像:

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

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