self.setInterval 中的 jquery 关键字 self 指的是什么?jQuery
var int=self.setInterval(function(){clock()},1000);
self.setInterval 中的 jquery 关键字 self 指的是什么?jQuery
var int=self.setInterval(function(){clock()},1000);
除非self
已在同一范围内的某处定义,否则它是对 Window 对象的引用。Window 对象实际上有 2 个自引用变量self
和window
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);
无需将其包装在匿名函数中,除非您需要执行除运行时钟之外的其他操作。
在 javascript 中,一些程序员使用变量self
或that
引用函数范围,即this
. this
对象是指当前对象或函数。
如果一个函数在另一个函数中执行,您将失去对this
. 解决它的一个简单技巧是this
在函数外部设置一个变量。
有一些方法可以通过使用 jquery $.proxy(function, this)
(IE8 兼容,不确定 IE7 及更低版本)或现代浏览器来避免这些引用(function(){}.bind(this))
更新
正如帕特里克指出的那样,self
默认情况下引用 active window
。例如有用的内部框架。
self
不是 JavaScript 中的保留字。但是,分配self
给当前方法正在执行的对象有一个常见的约定。例如:
var myobj = {
mymethod: function () {
var self = this;
},
};
这样做的原因是备份this
到一个变量,这样你就可以做其他很酷的事情,比如影响父对象的异步回调。
也许如果您能给我们更多的上下文,我们可以解释self
变量在您的问题中设置的内容。