ECMA-262对内置对象的定义是“任何由ECMAScript实现提供、与宿主 环境无关,并在ECMAScript程序开始执行时就存在的对象”。这就意味着, 开发者不用显式地实例化内置对象,因为它们已经实例化好了。

全局的对象与全局对象的区别

“全局的”即“内置”的,注意与“全局”区分。全局的指JavaScript标准的内置函数(方法)、对象和属性。也就是说语言本身已经内置好了,可以拿来即用的东西。

全局的对象( global objects )即标准内置对象,而“全局对象 (global object)”是指可以在全局作用域里,通过this访问的对象。

javascript内置对象主要包括:

  • Object对象
  • Array对象
  • Boolean
  • Number
  • String
  • Date
  • Math
  • RegExp
  • JSON
  • Global

通过这些内置对象,我们就可以比较方便的操作在上一节中认识的数据类型了。

参考:
w3school参考手册
MDN

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来处理。