Nic*_*unt 25 javascript dom self keyword
我在这里读到" 自我指的是当前的窗口或形式 ".
在这种情况下,Self似乎没有引用当前的形式:
<form><input type="text" onkeyup="alert(self.foo.value)" name="foo"></form>
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下它可以工作(参考窗口):
<form><input type="text" onkeyup="alert(self.document.forms[0].foo.value)" name="foo"></form>
Run Code Online (Sandbox Code Playgroud)
那你什么时候才能使用selfDOM属性window呢?
Gar*_*ett 12
其他答复指出,self不会指FORM那self是window.他们是对的; self 是 window.好吧,除非它不是.无论是IE6还是IE7(忘了),self.onload都不会开火window.onload.
IE的所有官方版本(甚至IE9pr3)都对==这些主机对象有一个奇怪的,不敏感的实现.使用==要么比较window或self文档中的一个节点,其结果是true.
IE奇怪
alert(self == document.body); // true
alert(document.body == self); // false
alert(window == self); // true
alert(window === self); //false
var b = document.createElement("b");
alert(window == b); // false
alert(window == document.body.appendChild(b)); // true
alert(window == document.body.removeChild(b)); // false
Cha*_*ick 11
self 不是保留关键字或标准类型,但在保持对闭包对象的引用时已成为事实上的标准名称.
这里我们创建一个传递给的闭包setTimeout().执行该闭包时,this将引用全局对象.为了保持对该foo对象的引用doLater最初被调用,使用了一个名为var的命名self.它可能是任何东西,但"自我"具有有意义的语义.
Foo.prototype.doLater = function() {
var self = this; // current object
window.setTimeout(function() { self.doSomething(); }, 1000);
}
new Foo().doLater();
Run Code Online (Sandbox Code Playgroud)
Swi*_*ift 10
对于所有窗口,对象的
self和window属性window是当前窗口的同义词,您可以选择使用它们来引用当前窗口.例如,您可以通过调用或的close方法 来关闭当前窗口.您可以使用这些属性使代码更具可读性,或者从名为的表单中消除属性引用的歧义.windowselfself.statusstatus
self指的是全局范围- 如果上下文是一个窗口,它将引用 window.self,而在非窗口上下文的情况下,它将引用该上下文的全局范围(例如,在 service worker 代码中,self 指的是工人全球范围)。
self 指的是上下文的全局范围:
https://developer.mozilla.org/en-US/docs/Web/API/Window/self
从来没有,除非我想self在函数范围内创建一个变量,引用上下文供以后参考,
function Constructor() {
var self = this;
}
Run Code Online (Sandbox Code Playgroud)
你应该this用来引用手头的元素,而不是self.在全球范围内虽然this是参考window,self也是window.
| 归档时间: |
|
| 查看次数: |
20660 次 |
| 最近记录: |