"自我"在javascript中的含义是什么?

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不会指FORMselfwindow.他们是对的; self window.好吧,除非它不是.无论是IE6还是IE7(忘了),self.onload都不会开火window.onload.

IE的所有官方版本(甚至IE9pr3)都对==这些主机对象有一个奇怪的,不敏感的实现.使用==要么比较windowself文档中的一个节点,其结果是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

对于所有窗口,对象的selfwindow 属性window是当前窗口的同义词,您可以选择使用它们来引用当前窗口.例如,您可以通过调用或的close方法 来关闭当前窗口.您可以使用这些属性使代码更具可读性,或者从名为的表单中消除属性引用的歧义.windowselfself.statusstatus

  • 原始来源http://docs.sun.com/source/816-6408-10/window.htm.现代来源http://dev.w3.org/html5/spec/Overview.html#dom-self (4认同)

MyU*_*low 8

self指的是全局范围- 如果上下文是一个窗口,它将引用 window.self,而在非窗口上下文的情况下,它将引用该上下文的全局范围(例如,在 service worker 代码中,self 指的是工人全球范围)。

self 指的是上下文的全局范围:

  • 窗口上下文
  • 工作人员上下文(正在为同一个 web 应用程序支持多个工作人员)。

https://developer.mozilla.org/en-US/docs/Web/API/Window/self


med*_*iev 6

从来没有,除非我想self在函数范围内创建一个变量,引用上下文供以后参考,

function Constructor() {
    var self = this;
}
Run Code Online (Sandbox Code Playgroud)

你应该this用来引用手头的元素,而不是self.在全球范围内虽然this是参考window,self也是window.