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