什么是jquery关键字self在self.setInterval中引用? jQuery的

时间:2013-08-17 19:50:51

标签: javascript jquery setinterval self

self.setInterval中jquery关键字self引用的是什么? jquery的

var int=self.setInterval(function(){clock()},1000);

3 个答案:

答案 0 :(得分:7)

除非self已在同一范围内的某处定义,否则它是对Window对象的引用。 Window对象实际上有2个自引用变量selfwindow

因此你可以做self.window.self.window.self.window.self.window.self,如果你有一种奇怪的心情。

这样你的代码

var int=self.setInterval(function(){clock()},1000);

相当于

var int = setInterval(function(){clock()},1000);

var int = window.setInterval(function(){clock()},1000);

你也可以这样做

setInterval(clock,1000);

除非你需要在运行时钟之外做其他事情,否则不需要将它包装在匿名函数中。

window.self

答案 1 :(得分:2)

在javascript中,一些程序员使用变量selfthat来引用函数作用域thisthis对象引用当前对象或函数。

如果函数在另一个函数内执行,您将失去对this的引用。 解决它的一个简单技巧是将this设置为函数外的变量。

有一些方法可以通过使用jquery $.proxy(function, this)(IE8兼容,不确定IE7及更低版本)或现代浏览器(function(){}.bind(this))

来避免这些引用

<强>更新

正如帕特里克所指出的,默认情况下self被引用到活跃的window。例如,有用的内部框架。

http://www.w3schools.com/jsref/prop_win_self.asp

答案 2 :(得分:2)

self不是JavaScript中的保留字。但是,有一个常见的约定是将self分配给当前方法正在执行的对象。例如:

var myobj = {
    mymethod: function () {
        var self = this;
    },
};

这样做的原因是将this备份到一个变量,这样你就可以做其他很酷的事情,比如影响父对象的异步回调。

也许如果你能给我们更多的背景信息,我们可以解释你的问题中self变量的设置。