js中的Global、Math对象及其方法——引用类型中的单体内置对象

一、什么是单体内置对象

ECMA-262对内置对象的定义是:有ECMAScript实现提供的,不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了。意思就是开发人员不必显式的实例化内置对象因为它们已经实例化了。像Object、Array、String对象都属于内置对象,在写代码时不用专门的去实例化它们。
ECMA-262还定义了两个单体内置对象:Global和Math

二、Global对像

所有全局作用域中定义的属性和函数,都是Global对象得属性。像IsNaN()、isFinite()、parseInt() 以及parseFloat()实际上都是Global对象的方法。下面是它的一些其他方法
1、URI编码方法
(1)encodeURI()和encodeURIComponent()方法

  • 这两个方法可以对URI(Uniform Resouce Identifiers,通用资源标识符)进行编码,以便发给浏览器。
  • 有效的URI中不能包含某些字符,例如空格,而这两个URI编码方法就可以对URI进行编码,它们用特殊的UTF-8编码替换所有无效的字符,从而使浏览器能够接受和理解
  • encodeURI()主要用于整个URI(例如:http://www.wrox.com/illegal value.htm),而encodeURIComponent()主要用于对URI中的某一段(例如前面URI中的illegal value.htm)进行编码
  • 两个方法的主要区别在于:encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而encodeURIComponent()则会对它发现的任何非标准字符进行编码
    例子如下:
 var uri = "http://www.wrox.com/illegal value.htm#start";
  
  alert(encodeURI(uri));//http://www.wrox.com/illegal%20value.htm#start
  /*结果是除了空格之外的其他字符都原封不动,只有空格被替换成了%20*/
  
  alert(encodeURIComponent(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start
  /*结果是用对应的编码替换所有非字母非数字字符*/

(2)decodeURI()和decodeURIComponent()方法

  • decodeURI()只能对使用encodeURI()编码的字符进行解码,例如:它可将%20替换成空格,但不会对%23做任何处理,因为%23表示井字号(#),而井字号不是使用encodeURI()编码的。同样的,decodeURIComponent()能够解码使用encodeURIComponent()编码的所有字符,即它可以解码任何特殊字符的编码。
三、Global对象的属性

下表中列出了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构造函数TyprError
URIError构造函数URIError

ECMAScript5明确了禁止给undefined、NaN和Infinity赋值。

四、window对象

ECMAScript虽然没有指出如何直接访问Global对象,但Web浏览器都是将这个全局对象作为window对象的一部分加以实现的。因此在全局作用域中声明的所有变量和函数都成为window对象的属性。

//下面声明的color变量就变成了window对象的属性
  var color = "yellow";
  function showColor(){
      console.log(window.color);
  }
  showColor();//"yellow"
    
  //下面是取得Global对象的方法
    var global = function(){
        return this;//this值会默认的指向window
    }
五、Math对象

1、Math对象的属性
Math对象的属性大都是数学计算中可能会用到的一些特殊值

属性说明
Math.E自然对数的底数,即常量e的值
Math.LN1010的自然对数
Math.LN22的自然对数
Math.LOG2E以2为底e的对数
Math.LOG10E以10为底e的对数
Math.PIπ的值
Math.SQRT1_2二分之一的平方根
Math.SQRT22的平方根

2、min()和max()方法
这两个方法用于确定一组数值中的最小值和最大值,都可以接收任意多个参数

  var min = Math.min(1,3,2,5,7,6);
  console.log(min);//1
  var max = Math.max(3,5,7,2,9,33,1);
  console.log(max);//33

3、舍入方法
将小数舍为整数的几个方法:Math.ceil()、Math.floor()和Math.round(),分别遵循下列舍入规则:

  • Math.ceil():执行向上舍入,向上取整
  • Math.filoor():执行向下舍入,向下取整
  • Math.round():执行标准舍入,即四舍五入
    如下:
  console.log(Math.ceil(21.9));//22
  console.log(Math.ceil(21.5));//22
  console.log(Math.ceil(21.1));//22

  console.log(Math.floor(21.9));//21
  console.log(Math.floor(21.5));//21
  console.log(Math.floor(21.1));//21

  console.log(Math.round(21.9));//22
  console.log(Math.rounf(21.5));//22
  console.log(Math.rounf(21.1));//21

4、random()方法
Math.random()方法返回一个大于0小于1的随机数

想要取得任一个范围内的数,可以按照下面操作:
例如:

  var num1 = Math.random()*20;//0到20之间的一个随机数
  var num2 = Matn.random()*20+5;//5到25之间的一个随机数
  var num3 = Math.floor(Math.random()*20+1);//1到21之间的一个随机的整数(不包含21)
  var num4 = Math.ceil(Math.random()*20+1);//1到21之间的一个随机的整数(不包含1)

总结来说就是:值=Math.floor(Math.random()*可能值的总数+第一个可能的值)

可以通过一个函数来计算可能值的总数第一个可能的值,如下:

function selectFrom(lowerValue,upperValue){
     var choices = upperValue - lowerValue + 1;//此处加1是为了把最后一个数包含上
     return Math.floor(Math.random()*choices + lowerValue);
 }
 var num = selectFrom(20,30);
 console.log(num);//20到30之间的一个随机整数,包括20和30

5、Math对象的其它方法

方法说明
Math.abs(num)返回num的绝对值
Math.exp(num)返回Math.E的num次幂
Math.log(num)返回num的自然对数
Math.pow(num,power)返回num的power次幂
Math.sqrt(num)返回num的平方根
Math.acos(x)返回x的反余弦值
Math.asin(x)返回x的反正弦值
Math.atan(x)返回x的反正切值
Math.atan(x,y)返回x/y的反正切值
Matn.sin(x)返回x的正弦值
Math.cos(x)返回x的余弦值
Math.tan(x)返回x的正切值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值