使用其props /方法时,javascript是否需要引用对象?

Hob*_*y99 1 javascript object

当我通过以下任一版本检索信息时,我得到了正确的结果:

window.screen.height
Run Code Online (Sandbox Code Playgroud)

VS:

screen.height
Run Code Online (Sandbox Code Playgroud)

是否需要/建议写"窗口".部分,还是我可以把它留下来?

这是否也适用于访问document.properties/methods和其他对象 - 我从不需要编写'文档'.部分(或我访问的任何对象)?

T.J*_*der 10

是否需要/建议写"窗口".部分还是我可以把它留下来?

这个具体的例子(window浏览器中的属性)是一个特例; 不,你不必写window.在一般的,你必须指定对象引用.

这是一种特殊情况,因为它screen是全局对象的属性,使其成为全局变量.window全局对象,这是......全局对象引用的属性.所以window.screen并且screen引用相同的东西,在全局对象上称为"屏幕"的属性.你也可以写window.window.screenwindow.window.window.screen等等.:-)一些ASCII艺术可能是有用的:

        /-----------------\
        |                 |
        v                 |
+-------------------+     |
| The Global Object |     |
+-------------------+     |
| window            |----/            +-------------------+
| screen            |---------------->| The Screen Object |
| (other globals).. |                 +-------------------+
+-------------------+

如您所见,window全局对象上的属性引用回全局对象.

但同样,这是一个特例.


要点:使用该with语句,JavaScript确实可以在不处理全局对象时使用隐式对象引用

var obj = {foo: "bar"};
with (obj) {
    console.log(foo); // "bar"
}
Run Code Online (Sandbox Code Playgroud)

......但这可能会让人感到非常困惑,因此with广泛不鼓励使用(实际上,在语言的新(ish)"严格"模式中不允许使用).