单例内置对象:任何由ECMAScript实现提供、与宿主环境无关,并在ECMAScript程序开始执行时就存在的对象。即内置对象本身已经实例化好了。常见的内置对象有:
Object
、Array
、String
、Global
和Math
。
Global
它是最特别的对象,因为代码不会显示地访问它。事实上,全局变量和全局函数都会变成Global
的属性。isNaN()
、isFinite()
、parseInt()
和parseFloat()
实际上都是Global的方法。
编码与解码
let url="https://www.wrox.com/illegal value.js#start"
encodeURI(url) //https://www.wrox.com/illegal%20value.js#start
encodeURIComponent(url) //https%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start
eval()方法
它是一个完整的ECMAScript解释器,它接收一个参数,即要执行的ECMAScript字符串:
eval("console.log('hello')") //hello
一般情况下,eval()
执行的代码属于该调用所在上下文,被执行的代码与该上下文拥有相同的作用域链:
let msg="hello"
eval("console.log(msg)") //hello
eval("function sayHi(){console.log('hi')}")
sayHi() //hi
eval("let msg="hello")
console.log(msg) //hello
在严格模式下,执行
eval()
相当于创建了一个新的上下文。这种情况下,外部无法访问内部,但内部可以访问外部。
Global对象属性
window对象
虽然无法直接访问Global
,但浏览器将window
对象作为Glocal
对象的代理。因此所有全局作用域中声明的变量和函数都成了window
的属性。
获取Global对象
当一个函数没有明确指定this的情况下执行时,this值等于Global对象。
let global=function(){
return this
}();
Math
ECMAScript提供了Math
对象作为保存数学公式、信息和计算的地方。
Math属性
Math方法
Math.min(1,2,3,4,5) //1
Math.max(1,2,3,4,5) //5
//对于数组可以使用扩展操作符
let arr=[1,2,3,4,5]
Math.max(...arr) //5
舍入
let num=1.5
Math.ceil(num) //2
Math.floor(num) //1
Math.round(num) //2
随机数
Math.random() //0.932879007220689
//取1~10
Math.floor(Math.random()*10+1)
//取2~9:*后面表示总数有多少,+后面表示最小取多少
Math.floor(Math.random()*9+2)