从JS来到Ruby,我认为如果我在这两者之间进行比较和对比,就会很容易学习。当我偶然发现Ruby toplevel时,我不禁想到它与JavaScript中的全局对象(窗口对象)类似。
我做出这个假设是否正确?
答案 0 :(得分:1)
除了两个对象在任何其他对象的上下文之外充当this
/ self
之外,它没有任何有意义的相似之处。在任何其他方面,他们是完全不同的。没有通常有用的方法来引用顶级以外的main
,就像window
一样。全局变量是真正的全局变量,main
上下文中定义的常量或方法实际上并未在main
上定义,而是在Object类上定义。
答案 1 :(得分:0)
没有,你错了。
Ruby顶级只是一个Object。每个顶级层次结构都以Object结尾。换句话说,每件事都被视为一个对象。
您将顶级对象与所有实例共享的对象混淆。
在Javascript中,窗口对象是最顶层的,可以跨同一页面的多个调用共享(你可以称之为静态)。这就是为什么我们把它称为全球对象。
正确的说法,在Javascript和Ruby顶层都是一个对象(Window仍然是javascript中的一个对象)。