什么是客户端JavaScript中的自引用窗口属性?

3
我正在学习一本名为《Javascript权威指南-David Flanagan》的书籍。该书的第三章讲述了全局对象,其中提到:
全局Window对象具有自引用的window属性,可以用它来代替this来引用全局对象。
从上面这句话中我所理解的是window不是对象而是自引用,但是是否有人可以详细地解释一下它是如何实现的,以及如何为自定义对象创建自引用属性?
就像在Chrome控制台中输入window一样,我得到了:
Window {top: Window, location: Location, document: document, window: Window, external: Object…}
如何为自定义对象实现相同的效果?如果我完全误解了,请原谅我,因为我是JS的新手。
2个回答

3

自引用意味着Window对象有一个属性,它引用了自身。

window.window = window

当你处于 window 作用域时,this === window,因此你可以使用以下方法引用属性,如 window.location

  1. window.location
  2. this.location
  3. location
  4. window.window.location
  5. this.window.location
  6. 等等......

2
你理解错了。它的意思是window对象有一个成员叫做window,它是指向window对象本身的引用。也就是说,
window.window === window

添加一些引号可能会使引语更加清晰:

全局Window对象有一个自我引用的“window”属性...

(即,全局Window对象具有称为“window”的自我引用性质的属性。)

虽然这很少有用,但要为自定义对象创建一个类似的属性,您只需将其分配给一个成员元素即可。

var obj = {};
obj.obj = obj;

有一个小问题,但是为什么需要像dat这样的自引用属性...有没有window对象的特定原因呢? - Roy
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - JJJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接