Global 对象有很多属性,其中一些前面已经提到过了。像 undefined、NaN 和 Infinity 等特殊 值都是 Global 对象的属性。此外,所有原生引用类型构造函数,比如 Object 和 Function,也都是 Global 对象的属性。
undefined NaN Infinity Object Array Function Boolean String
特殊值 undefined 特殊值 NaN
特殊值 Infinity Object 的构造函数 Array 的构造函数 Function 的构造函数 Boolean 的构造函数 String 的构造函数
Number
Date
RegExp
Symbol
Error EvalError RangeError ReferenceError SyntaxError TypeError URIError
Number 的构造函数
Date 的构造函数
RegExp 的构造函数
Symbol 的伪构造函数
Error 的构造函数 3 EvalError 的构造函数
RangeError 的构造函数 ReferenceError 的构造函数 SyntaxError 的构造函数 TypeError 的构造函数 URIError 的构造函数
1. window 对象:
虽然 ECMA-262 没有规定直接访问 Global 对象的方式,但浏览器将 window 对象实现为 Global 对象的代理。因此,所有全局作用域中声明的变量和函数都变成了 window 的属性。来看下面的例子:
var color = "red";
function sayColor() {
console.log(window.color);
}
window.sayColor(); // "red"
这里定义了一个名为 color 的全局变量和一个名为 sayColor()的全局函数。在 sayColor()内部, 通过 window.color 访问了 color 变量,说明全局变量变成了 window 的属性。接着,又通过 window 对象直接调用了 window.sayColor()函数,从而输出字符串。
另一种获取 Global 对象的方式是使用如下的代码:
let global = function() {
return this;
}();
这段代码创建一个立即调用的函数表达式,返回了 this 的值。如前所述,当一个函数在没有明确 (通过成为某个对象的方法,或者通过 call()/apply())指定 this 值的情况下执行时,this 值等于 Global 对象。因此,调用一个简单返回 this 的函数是在任何执行上下文中获取 Global 对象的通用方式。
标签:对象,Global,sayColor,js,color,window,属性,构造函数 From: https://blog.51cto.com/u_16298168/9212840