单体内置对象_单体内置对象(Global、Math)

## 单体内置对象(Global、Math)

内置对象也就是我们不必显示地区实例化,直接就可以使用了,因为它们已经实例化了。

**1、Global 对象**

Global对象是一个全局对象。所有在全局作用域中定义的属性和函数,都是Global对象的属性,比如:isNaN()、isFinite()、parseInt()以及parseFloat(),实际上都是Global对象的方法,它还包括了其他一些方法:

**1.1 Global的方法**

**(1)URI编码方法**

Global对象的`encodeURI()`和`encodeURIComponent()`方法可以对URI(Uniform Resource Identifiers,通用资源标识符)进行编码,以便发送给服务器(在GET 请求中很重要的方法)。

有效的URI中不能包含某些字符,比如空格。

`encodeURI()`主要用于整个URI;`encodeURIComponent()`主要用于对URI中的某一段(比如:illegal value.html这一段)

`encodeURI()`和`encodeURIComponent()`的区别:

- `encodeURI()`不会对本身属于URI的特殊字符进行编码(比如冒号、正斜杠、问号和井字号);但`encodeURIComponent()`则会对它发现的任何非标准字符进行编码。

```

var uri = 'http://www.example.com/illegal value.html#start';

console.log(encodeURI(uri)); // http://www.example.com/illegal%20value.html#start

console.log(encodeURIComponent(uri)); // http%3A%2F%2Fwww.example.com%2Fillegal%20value.html%23start

```

从上面的例子的结果,我们也可以看出两者的区别,encodeURI()只对空格进行了编码,而encodeURIComponent()使用对应的编码替换了所有非标准的字符。

与`encodeURI()`和`encodeURIComponent()`方法对应的是`decodeURI()`和`decodeURIComponent()`。

decodeURI()只能对使用encodeURI()替换的字符进行解码;decodeURIComponent()能够解码使用encodeURIComponent()编码的所有字符。

```

console.log(decodeURI('http://www.example.com/illegal%20value.html#start'));

// http://www.example.com/illegal value.html#start

console.log(decodeURIComponent('http%3A%2F%2Fwww.example.com%2Fillegal%20value.html%23start'));

// http://www.example.com/illegal value.html#start

```

**(2)eval() 方法**

eval()方法类似一个完整的ECMAScript解析器,它接受一个参数,既要执行的JavaScript字符串。

```

eval("alert('hi')");

//等价于

alert('hi');

```

当解析器发现代码中调用eval()方法时,它会将传入的参数当作实际的ECMAScript语句来解析,然后把执行结果插入到原位置。

通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链。

```

var name = 'tg';

eval("console.log(name)"); // "tg"

eval("function test() { console.log(1); }");

test(); // 1

```

注意:在eval()创建的任何变量或函数都不会被提升。而且在严格模式下,在外部是访问不到eval()中创建的任何变量或函数。

**1.2 Global对象的属性**

undefined、NaN、Infinity、Object、Array、Function、Boolean、String、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

**1.3 window对象**

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

**2、Math 对象**

Math对象中保存了数学公式和信息。

**2.1 Math对象的属性**

```

Math.E 自然对数的底数,即常量e的值

Math.LN10 10的自然对数

Math.LN2 2的自然对数

Math.LOG2E 以2为底e的对数

Math.LOG10E 以10为底e的对数

Math.PI π的值

Math.SQRT1_2 1/2的平方根(即2的平方根的倒数)

Math.SQRT2 2的平方根

```

**2.2 Math对象的方法**

**(1)Math.min()和Math.max()**

`Math.min()`和`Math.max()`分别用于确定一组数值中的最小值和最大值,这两个方法都可以接收任意个数值参数。

```

console.log(Math.max(3, 10, 2, 100)); // 100

console.log(Math.min(3, 10, 2, 100)); // 2

```

如果要找到数组中的最大或最小值,可以这样:

```

var arr = [3, 10, 2, 100];

var max = Math.max.apply(Math, arr);

console.log(max); // 100

```

apply()方法是用来改变一个函数内的this指向,第一个参数就是要this指向的对象,第二个参数是一个数组。

**(2)舍入方法**

`Math.ceil()`执行向上舍入,即它总是取最接近数值且大于数值的整数

```

console.log(Math.ceil(1.4)); // 2

console.log(Math.ceil(1.5)); // 2

```

`Math.floor()`执行向下舍入,即它总是取最近数值且小于数值的整数。

```

console.log(Math.floor(1.4)); // 1

console.log(Math.floor(1.5)); // 1

```

`Math.round()`执行标准舍入,即它总是将数值四舍五入为最接近的整数。

```

console.log(Math.round(1.4)); // 1

console.log(Math.round(1.5)); // 2

```

**(3)random() 方法**

`Math.random()`方法返回介于0和1之间的一个随机数(不包括0和1)。

```

console.log(Math.random()); // 介于0~1之间的值

```

如果你要取其他的随机数,可以这样:

```

var rand = Math.random() * 10; // 介于0~10之间的值

var iRand = Math.floor(rand); // 介于0~10之间的整数

```

总结了一个方法:

```

function getRandom(max, min) {

min = arguments[1] || 0;

return Math.floor(Math.random() * (max - min + 1) + min);

};

```

getRandom()方法接受两个参数:应该返回的最小值和最大值。

**(4)其他方法**

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的反正弦值

Matn.atan(x) 返回x的反正切值

Math.atan2(y, x) 返回y/x的反正切值

Math.cos(x) 返回x的余弦值

Math.sin(x) 返回x的正弦值

Math.tan(x) 返回x的正切值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值