057_全局对象

本文介绍了JavaScript在特殊环境中的全局对象,如浏览器中的Window对象,强调全局对象不是类,无法实例化。还详细阐述了encodeURI、encodeURIComponent等多个全局函数的功能、语法、参数及返回值,同时提到eval()函数虽强大但使用少且效率低,最后给出了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在JavaScript代码嵌入一个特殊环境中时, 全局对象通常具有环境特定的属性。在浏览器中, JavaScript全局对象就是Window对象。

2. 全局对象只是一个对象, 而不是类。既没有构造函数, 也无法实例化一个新的全局对象。

3. 全局函数

4. 全局属性

5. encodeURI()函数

5.1. encodeURI()函数可把字符串作为URI进行编码。

5.2. 语法

encodeURI(URIstring)

5.3. 参数

5.4. 返回URIstring的副本, 其中的某些字符将被十六进制的转义序列进行替换。

5.5. 该方法不会对ASCII字母和数字进行编码, 也不会对这些ASCII标点符号进行编码。

6. encodeURIComponent()函数

6.1. encodeURIComponent()函数可把字符串作为URI组件进行编码。

6.2. 语法

encodeURIComponent(URIstring)

6.3. 参数

6.4. 返回URIstring的副本, 其中的某些字符将被十六进制的转义序列进行替换。

6.5. 该方法不会对ASCII字母和数字进行编码, 也不会对这些ASCII标点符号进行编码。不过, 这些用于分隔URI组件的标点符号(;/?:@&=+$,#), 会由一个或多个十六进制的转义序列替换。

7. decodeURI()函数

7.1. decodeURI()函数可对encodeURI()函数编码过的URI进行解码。

7.2. 语法

decodeURI(URIstring)

7.3. 参数

7.4. 返回URIstring的副本, 其中的十六进制转义序列将被它们表示的字符替换。

8. decodeURIComponent()函数

8.1. decodeURIComponent()函数可对encodeURIComponent()函数编码的URI进行解码。

8.2. 语法

decodeURIComponent(URIstring)

8.3. 参数

8.4. 返回URIstring的副本, 其中的十六进制转义序列将被它们表示的字符替换。

9. eval()函数

9.1. eval()函数可计算某个字符串, 并执行其中的的JavaScript代码。

9.2. 语法

eval(string)

9.3. 参数

9.4. 返回通过计算string得到的值(如果有的话)。

9.5. 该方法只接受原始字符串作为参数, 如果string参数不是原始字符串, 那么该方法将不作任何改变地返回。因此请不要为eval()函数传递String对象来作为参数。

9.6. 虽然eval()的功能非常强大, 但在实际使用中用到它的情况并不多。而且eval()效率低下。

10. 例子

10.1. 代码

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="utf-8" />
		<title>全局函数</title>
	</head>
	<body>
		<script type="text/javascript">
			var userName = '张三@qq.com';
			var password = 'a !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~1';
			var uri = 'http://www.zrq.com/login.action?';

			var eURI = uri + 'userName=' + encodeURI(userName) + '&password=' + encodeURI(password);
			var eURICpt = uri + 'userName=' + encodeURIComponent(userName) + '&password=' + encodeURIComponent(password);

			document.write('userName = ' + userName + ', password = ' + password + '<hr />');	
			document.write(eURI + '<br />');
			document.write(eURICpt + '<hr />');
			document.write(decodeURI(eURI) + '<br />');
			document.write(decodeURIComponent(eURICpt) + '<hr />');

			eval("x=10;y=20;document.write(x+' * '+y+' = '+x*y);");
		</script>
	</body>
</html>
<!-- 
空格 ! "   #   $   %   &   ' ( ) * +   ,   - . /   :   ;   <   =   >   ?   @   [   \   ]   ^   _ `   {   |   }   ~
空格 ! %22 #   $   %25 &   ' ( ) * +   ,   - . /   :   ;   %3C =   %3E ?   @   %5B %5C %5D %5E _ %60 %7B %7C %7D ~
空格 ! %22 %23 %24 %25 %26 ' ( ) * %2B %2C - . %2F %3A %3B %3C %3D %3E %3F %40 %5B %5C %5D %5E _ %60 %7B %7C %7D ~

" % < > [ \ ] ^ ` { | }
空格 # $ & + , / : ; = ? @ 

奇怪的是encodeURIComponent为什么没有对!'()~五个字符编码
-->

10.2. 效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值