单体内置对象
相关代码 →
- 由 ECMAScript 实现提供的,不依赖于宿主环境的对象,在 ECMAScript 程序执行之前就已经存在
- Global 和 Math
Global 对象
- 不属于任何其他对象的属性和方法,最终都是 Global 的属性和方法
- isNan(),isFinite(),parseInt(),parseFloat()
URI 编码方法 |
返回值 |
encodeURI() |
URI 编码,冒号、正斜杠、问号、井号除外 |
encodeURIComponent() |
URI 编码,所有非标准字符 |
decodeURI() |
URI 解码,只针对使用 encode()编码的字符 |
decodeURIComponent() |
URI 解码,所有非标准字符 |
var uri = 'https://element cn/#tab'
console.log(encodeURI(uri)) // https://element%20cn/#tab,本身属于URI的字符不编码(冒号、正斜杠、问号、井号)
console.log(encodeURIComponent(uri)) // https%3A%2F%2Felement%20cn%2F%23tab,编码所有非标准字符
console.log(decodeURI('https%3A%2F%2Felement%20cn%2F%23tab')) // https%3A%2F%2Felement cn%2F%23tab,只针对使用 encode()编码的字符解码
console.log(decodeURIComponent('https%3A%2F%2Felement%20cn%2F%23tab')) // https://element cn/#tab,解码所有非标准字符
eval 方法 |
返回值 |
eval() |
将传入的参数当作实际的 EXMAScript 语句解析 |
- 将传入的参数当作实际的 EXMAScript 语句解析
- 被执行的代码具有与该执行环境相同的作用域链
- eval() 创建的变量或函数不会被提升
- 严格模式下,外部访问不到 eval() 中创建的变量或函数,为 eval 赋值也会报错
eval("console.log('hi')") // "hi",将传入的参数当作实际的 EXMAScript 语句解析
eval("function sayHi() {console.log('hi')}")
sayHi() // "hi",被执行的代码具有与该执行环境相同的作用域链
// console.log(msg) // 报错,eval() 创建的变量或函数不会被提升
eval("var msg = 'hi'")
console.log(msg) // "hi",被执行的代码具有与该执行环境相同的作用域链
Global 对象属性 |
说明 |
undefined |
特殊值 undefined |
NaN |
特殊值 NaN |
Infinity |
特殊值 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 |
// web浏览器将global全局对象作为window对象
var color = 'red'
function sayColor() {
console.log(window.color)
}
window.sayColor() // red
Math 对象
max 和 min |
|
min() |
确定一组数值的最大值 |
max() |
确定一组数值的最小值 |
console.log(Math.max(3, 54, 32, 16)) // 54
console.log(Math.min(3, 54, 32, 16)) // 3
var values = [1, 2, 3, 4, 5]
console.log(Math.max.apply(Math, values)) // 把 Math 对象作为 apply()的第一个参数,将数组作为第二个参数
舍入方法 |
|
ceil() |
向上取整 |
floor() |
向下取整 |
round() |
四舍五入 |
console.log(Math.ceil(1.9)) // 2
console.log(Math.floor(1.9)) // 1
console.log(Math.round(1.9)) // 2
random 方法 |
|
random() |
返回大于 0 小于 1 的随机数 |
console.log(Math.random()) // 大于 0 小于 1 的随机数
console.log(Math.floor(Math.random() * 10 + 1))
function selectFrom(lowerValue, upperValue) {
var choices = upperValue - lowerValue + 1 // 获取范围内的数量
return Math.floor(Math.random() * choices + lowerValue)
}
var num = selectFrom(7, 32)
console.log(num)
总结 & 问点
- 单体内置对象有哪些?分别有什么特点?
- Global 对象有哪些方法?分别有什么用法?
- eval 方法的用法和特点?
严格模式下,eval 方法受到哪些限制?
- Global 对象有哪些属性?
- 在 web 浏览器中,将 global 全局对象作为什么对象实现的?
- Math 对象有哪些方法?分别有什么用法?
- 请用 Math 对象确定数组中的最大值/最小值
- 请用 Math 对象随机生成 m-n 之间的整数