Global object
在網頁叫 window,在 node.js 叫 global。
// window 除了全域物件也可以做為視窗的物件
alert(window.innerHeight); // 显示浏览器窗口高度
window.open('http://google.com'); // 打开一个新的浏览器窗口
var x = 5;
// var 自動變成 window 屬性
alert(window.x); // 5 (变量 x 成为 window 的一个属性)
window.x = 0;
alert(x); // 0, 变量已修改
// let、const 不會
let x = 5;
alert(window.x); // undefined ("let" 不会创建窗口属性)
// 全域變數在不同腳本可以共用
<script>
var a = 1;
let b = 2;
</script>
<script>
alert(a); // 1
alert(b); // 2
</script>
// 全域 this 的值是 window
alert(this); // window
// 加上 module 腳本會有自己的作用域
<script type="module">
var x = 5;
alert(window.x); // undefined
</script>
// 不同腳本無法共用
<script type="module">
let x = 5;
</script>
<script type="module">
alert(window.x); // undefined
alert(x); // 错误:未声明的变量
</script>
// this 的值不是 window
<script type="module">
alert(this); // undefined
</script>
// 通常會減少全域變數,但若真有需要可能希望放到全域物件中
// 明确地将它分配给 `window`
window.currentUser = {
name: "John",
age: 30
};
// 然后,在另一个脚本中
alert(window.currentUser.name); // John
// 測試瀏覽器是否支持新功能
if (!window.Promise) {
alert("Your browser is really old!");
}
// 自訂義新功能
if (!window.Promise) {
window.Promise = ... // 自定义实现现代语言特性
}
Last updated