手机版

Javascript全局对象

时间:2021-11-24 来源:互联网 编辑:宝哥软件园 浏览:

全局对象全局对象是ECMAScript中最特殊的对象,因为它根本不存在。如果您尝试编写以下代码,将会得到一个错误:

错误信息显示Global不是对象,但你刚才不是说Global是对象吗?没错。这里要理解的主要概念是,在ECMAScript中,没有独立的函数,所有的函数都必须是一个对象的方法。本书前面介绍的函数,如isNaN()、isFinite()、parseInt()和parseFloat(),看起来都像是独立的函数。实际上,它们都是全局对象的方法。全局对象的方法不止这些。encori()和encodeURIComponent()方法用于编码传递给浏览器的统一资源标识符。的有效URI不能包含某些字符,如空格。这两种方法是用来编码URIs的,这样所有的无效字符都可以用特殊的UTF-8编码代替,浏览器仍然可以接受和理解。encodeURI()方法用于处理完整的URI(例如,value.htm,http://www . wrox.com/invalid),而encodeURIComponent()用于处理URI的一个片段(例如,以前URI的非法value.htm)。这两种方法的主要区别在于encodeURI()方法不编码URIs的特殊字符,如冒号、正斜杠、问号和井号,而encodeURIComponent()编码它找到的所有非标准字符。例如:

该代码输出两个值:

可以看到,第一个URI除了空间没有变化,空间被替换了。第二个URI中的所有非字母数字字符都被替换为它们相应的代码,这基本上使这个URI变得无用。这就是为什么encodeURI()可以处理完整的URIs,而encodeURIComponent()只能处理附加到现有URIs末尾的字符串。自然,有两种解码编码URIs的方法,即decodeURI()和decodeURIComponent()。正如您所料,这两种方法的作用完全相反。DecodeURI()方法只解码由encodeURI()方法替换的字符。例如,% 20将被替换为空格,而% 23将不会被替换,因为它代表井号(#),而encodeURI()不会替换此符号。同样,Decoderuicomponent()将解码encodeURIComponent()编码的所有字符,这意味着它将解码所有特殊值。例如:

这段代码输出两个值:

在本例中,变量uri存储了一个用encodeURIComponent()编码的字符串。生成的值说明了应用两种解码方法时会发生什么。第一个值由decodeURI()输出,并用空格替换。第二个值由decodeURIComponent()输出,替换所有特殊的值。URI方法encodeURI(),encodeURIComponent(),decodeURI()和decoduricom-component()替换了BOM的escape()和escape()方法。URI方法更可取,因为它们编码所有Unicode符号,而BOM方法只能正确编码ASCII符号。尽量避免使用escape()和escape()方法。最后一种方法可能是整个ECMAScript语言中最强大的方法,也就是eval()方法。该方法就像ECMAScript的整个解释器一样,接受一个参数,即要执行的ECMAScript(或JavaScript)字符串。例如:

这一行代码的功能相当于下面的代码:

当解释器找到eval()调用时,它会将参数解释为真正的ECMAScript语句,然后将其插入函数所在的位置。这意味着eval()调用内部引用的变量可以在参数之外定义:

这里,变量msg是在eval()调用的环境之外定义的,但是警告仍然显示文本“hello world”,因为第二行代码将被真正的一行代码替换。同样,您可以在eval()调用内部定义一个函数或变量,然后在函数外部的代码中引用它:

这里,函数sayHi()是在eval()调用中定义的。因为调用将被实函数代替,所以在下一行中仍然可以调用sayHi()。这个功能很强大,但是也很危险。使用eval()时要特别小心,尤其是在将用户输入的数据传递给它时。恶意用户可能会插入对网站或应用程序的安全性有害的值(称为代码注入)。全局对象不仅是一种方法,也是一种属性。还记得那些未定义的特殊值,NaN和Infinity吗?它们是全局对象的属性。此外,所有本地对象的构造函数也是全局对象的属性。下表详细描述了Global对象的所有属性:undefinedUndefined类型NaN的文字是非数字的特殊值,Infinity object的构造函数ArrayArray的构造函数Function的构造函数BooleanBoolean的特殊值。DateDate 的Number构造函数的number字符串构造函数的构造函数。

RegExpRegExp构造函数错误错误构造函数EvalErrorEvalError构造函数范围错误范围错误构造函数引用错误构造函数语法错误语法错误构造函数类型错误类型错误构造函数URIErrorURIError构造函数。

版权声明:Javascript全局对象是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。