《javascript高级程序设计》学习笔记 | 5.7.单体内置对象

欢迎关注前端小讴的github,阅读更多原创技术文章

单体内置对象

相关代码 →

  • 由 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 的随机数
  • 选择 1-10 之间的整数
console.log(Math.floor(Math.random() * 10 + 1))
  • 选择 m-n 之间的整数
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 之间的整数

你可能感兴趣的:(《javascript高级程序设计》学习笔记 | 5.7.单体内置对象)