JS的Global对象

来源:互联网 发布:java键盘监听事件 编辑:程序博客网 时间:2024/06/02 05:33

Global对象

Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在。

例如:

尝试编写下面的代码。将得到错误(错误消息显示Global不是对象):

var pointer = Global;

 

需要理解的是:

ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。如:isNaN()isFinite()parseInt()parseFloat()等,这些看起来都像独立的函数,实际上,它们都是Global对象的方法。

 

Global对象不只有方法,还有属性。如undenfinedNaNInfinity等都是Global对象的属性。此外,所有本地对象的构造函数也都是Global对象的属性。

Global对象的所有属性:

属性

说明

undenfined

Undenfined类型的字面量

NaN

非数的专用数值

Infinity

无穷大值的专有数值

Object

Object的构造函数

Array

Array的构造函数

Function

Function的构造函数

Boolean

Boolean的构造函数

String

String的构造函数

Number

Number的构造函数

Date

Date的构造函数

RegExp

RegExp的构造函数

Error

Error的构造函数

EvalError

EvalError的构造函数

RangeError

RangeError的构造函数

ReferenceError

ReferenceError的构造函数

SyntaxError

SyntaxError的构造函数

TypeError

TypeError的构造函数

URIError

URIError的构造函数

 

扩展:

eval()方法:

该方法可能是ECMAScript中最强大的方法,该方法就像整个ECMAScript的解释程序,接受一个参数,即要执行的ECMAScript(或JavaScript)字符串。

如:

eval(“alert(‘hi’)”);

等价于alert(“hi”);

//当解释程序发现eval()调用时,它将把参数解释为真正的ECMAScript语句,然后把它插入该函数所在的位置。这意味着:

1eval()调用内部引用的变量可在参数以外定义:

var msg = “hello world”;

eval(“alert(msg)”);

//这里变量msg是在eval()调用的环境外定义的,而警告仍然显示的是文本“hello world”,因为第二行代码将被替换为一行真正的代码。

 

2)同样,可以在eval()调用内部定义函数或变量,然后在函数外的代码中引用:

eval(function sayHi() { alert(‘hi’); });

sayHi();

//这里,函数sayHi()是在eval()调用内部定义的。因为该调用将被替换为真正的函数,所以仍可在接下来的一行中调用sayHi()

扩展:

使用eval()时要极度小心,尤其在给它传递用户输入端数据时。恶意的用户可能会插入对站点或应用程序的安全性有危害的值(叫做代码注入)

 

 

0 0
原创粉丝点击