JavaScript 内置对象 Global 详解:编码方法与 eval 风险

作者:青柠时间:2026-10-26 17:30:22浏览:300

本文介绍 ECMAScript 中的 Global 内置对象,指出其虽不存在但包含所有全局函数。详细解析 escape、encodeURI、encodeURIComponent 等编码方法的非编码字符差异及适用场景,并对比解码方法。重点说明 eval 的强大功能与代码注入风险,最后列举 Global 对象的属性及构造函数。

内置对象

Global 对象概述

定义:由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现。



由定义可知开发者不必明确实例化内置对象,它已被实例化了。在 ECMAScript-262 只定义了两个内置对象,即 Global 和 Math



Global

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



由于在 ECMAScript 中不存在独立的对象,所有函数都必须是某个对象的方法,如前面提到的 isNaN()、isFinite()、parseInt() 和 parseFloat() 等,都是 Global 对象的方法。



Global 对象的方法

escape()、encodeURI()、encodeURIComponent()、unescape()、decodeURI()、decodeURIComponent()、eval() 等都是 Global 的方法。



escape() && encodeURI() && encodeURIComponent()

字符串编码方法

这几个方法用于对字符串进行编码。



escape 不编码字符有 69 个:*,+,-,.,/,@,_,0-9,a-z,A-Z



encodeURI 不编码字符有 82 个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z



encodeURIComponent 不编码字符有 71 个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z



  escape():不建议用,已淘汰

encodeURI():对 URL 进行编码,示例:


代码如下:

 
encodeURI("https://www.jb51.net/a file with spaces.html")
// outputs https://www.jb51.net/a%20file%20with%20spaces.html

encodeURIComponent():对参数进行编码,示例:


代码如下:

 
param1 = encodeURIComponent("http://xyz.com/?a=12&b=55")
url ="http://domain.com/?param1="+ param1 +"&param2=99";
// outputs http://www.domain.com/?param1=http%3A%2F%Fxyz.com%F%Ffa%3D12%26b%3D55&param2=99

unescape() && decodeURI() && decodeURIComponent()

字符串解码方法

这几个方法用于对字符串进行解码。



eval()

eval 方法与风险

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



示例:



代码如下:

 
var msg="Hello world";
eval("alert(msg)");//alert "Hello world"

注意,eval() 功能很强大,但也很危险,特别在用 eval 执行用户输入的内容时,可能会被代码注入。



Global 对象的所有属性

Global 对象的属性

Global 不只有方法,它还有属性,Global 对象的所有属性:


属性

说明

undefined

Undifined类型的字面量

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 的构造函数

作者:天行健,自强不息



出处:http://artwl.cnblogs.com

作者最新文章