ECMA-262对内置对象的定义是“任何由ECMAScript实现提供、与宿主 环境无关,并在ECMAScript程序开始执行时就存在的对象”。这就意味着, 开发者不用显式地实例化内置对象,因为它们已经实例化好了。
全局的对象与全局对象的区别
“全局的”即“内置”的,注意与“全局”区分。全局的指JavaScript标准的内置函数(方法)、对象和属性。也就是说语言本身已经内置好了,可以拿来即用的东西。
全局的对象( global objects )即标准内置对象,而“全局对象 (global object)”是指可以在全局作用域里,通过this
访问的对象。
javascript内置对象主要包括:
- Object对象
- Array对象
- Boolean
- Number
- String
- Date
- Math
- RegExp
- JSON
- Global
通过这些内置对象,我们就可以比较方便的操作在上一节中认识的数据类型了。
JavaScript 内置属性
属性 | 描述 |
---|---|
Infinity | 代表正的无穷大的数值。 |
NaN | 指示某个值是不是数字值。 |
undefined | 指示未定义的值。 |
JavaScript 内置函数
函数 | 描述 |
---|---|
decodeURI() | 解码某个编码的 URI。 |
decodeURIComponent() | 解码一个编码的 URI 组件。 |
encodeURI() | 把字符串编码为 URI。 |
encodeURIComponent() | 把字符串编码为 URI 组件。 |
escape() | 对字符串进行编码。 |
eval() | 计算 JavaScript 字符串,并把它作为脚本代码来执行。 |
isFinite() | 检查某个值是否为有穷大的数。 |
isNaN() | 检查某个值是否是数字。 |
Number() | 把对象的值转换为数字。 |
parseFloat() | 解析一个字符串并返回一个浮点数。 |
parseInt() | 解析一个字符串并返回一个整数。 |
String() | 把对象的值转换为字符串。 |
unescape() | 对由 escape() 编码的字符串进行解码。 |
encodeURI url的编码操作
当我们通过url来传递一些信息的时候, 可能会出现一些读取的问题(url中含有空格等字符),我们常用encodeURI与encodeURIComponent进行编码后再进行传递, 但是我发现项目中所有地方都用encodeURIComponent, 为什么会这样这两种有什么区别?
因为encodeURI并不会对;/?:@&=+$,#之类的字符进行转移, 这就会导致某些特殊情况下解析uri出现问题(后端使用的语言不同导致解析方式不同), encodeURIComponent会转义URI各个部分的标点符号比如常用的连接符&与?, 也就是说它转义的更彻底安全性更高, 所以建议尽可能使用encodeURIComponent来处理。