1

self.setInterval 中的 jquery 关键字 self 指的是什么?jQuery

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

3 回答 3

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);

无需将其包装在匿名函数中,除非您需要执行除运行时钟之外的其他操作。

窗口.self

于 2013-08-17T20:21:56.460 回答
2

在 javascript 中,一些程序员使用变量selfthat引用函数范围,即this. this对象是指当前对象或函数。

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

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

更新

正如帕特里克指出的那样,self默认情况下引用 active window。例如有用的内部框架。

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

于 2013-08-17T19:57:48.267 回答
2

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

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

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

也许如果您能给我们更多的上下文,我们可以解释self变量在您的问题中设置的内容。

于 2013-08-17T19:59:20.280 回答