Javascript-单体内置对象

内置对象

ECMA-262 对内置对象的定义是:“由ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在ECMAScript 程序执行之前就已经存在了。”意思就是说,开发人员不必显式地实例化内置对象,因为它们已经实例化了。前面我们已经介绍了大多数内置对象,例如Object、Array 和String。

单体内置对象

一、Global对象

ECMAScript 中的Global 对象在某种意义上是作为一个终极的“兜底儿对象”来定义的。换句话说,不属于任何其他对象的属性和方法,最终都是它的属性和方法。事实上,没有全局变量或全局函数;所有在全局作用域中定义的属性和函数,都是Global 对象的属性。本书前面介绍过的那些函数,诸如isNaN()、isFinite()、parseInt()以及parseFloat(),实际上全都是Global对象的方法。除此之外,Global 对象还包含其他一些方法。

1、URI编码方法
Global 对象的encodeURI()和encodeURIComponent()方法可以对URI(Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器。有效的URI 中不能包含某些字符,例如空格。而这两个URI 编码方法就可以对URI 进行编码,它们用特殊的UTF-8 编码替换所有无效的字符,从而让浏览器能够接受和理解。
它们的主要区别在于,encodeURI()不会对本身属于URI 的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而encodeURIComponent()则会对它发现的任何非标准字符进行编码。

var uri = "http://www.dingjianfei.com/1.html";
console.log(encodeURI(uri)); //"http://www.dingjianfei.com/1.html"
console.log(encodeURIComponent(uri));   //"http%3A%2F%2Fwww.dingjianfei.com%2F1.html"

与encodeURI()和encodeURIComponent()方法对应的两个方法分别是decodeURI()和decodeURIComponent()。其中,decodeURI()只能对使用encodeURI()替换的字符进行解码。例如,它可将%20 替换成一个空格,但不会对%23 作任何处理,因为%23 表示井字号(#),而井字号不是使用encodeURI()替换的。同样地,decodeURIComponent()能够解码使用encodeURIComponent()编码的所有字符,即它可以解码任何特殊字符的编码。
2、eval()方法

eval()方法就像是一个完整的ECMAScript 解析器,它只接受一个参数,即要执行的ECMAScript (或JavaScript)字符串。

eval("console.log('Tom')"); //"Tom"
等价于
console.log("Tom");

注意:在eval()中创建的任何变量或函数都不会被提升,因为在解析代码的时候,它们被包含在一个字符串中;它们只在eval()执行的时候创建。严格模式下,在外部访问不到eval()中创建的任何变量或函数。
**3、Global对象的属性

Javascript-单体内置对象_第1张图片
Global属性

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

var color = "red";
function sayColor(){
    console.log(window.color);
}
window.sayColor(); //"red"

另一种取得Global 对象的方法是使用以下代码:

var global = function(){              //"window"
  return this;
}();

二、Math()对象

ECMAScript 还为保存数学公式和信息提供了一个公共位置,即Math 对象。与我们在JavaScript 直接编写的计算功能相比,Math 对象提供的计算功能执行起来要快得多。Math 对象中还提供了辅助完成这些计算的属性和方法。
1、Math对象的属性

Javascript-单体内置对象_第2张图片
Math属性

2、min()和max()方法
很显然,这两个方法是找出一组数中的最大和最小值。

var max = Math.max(3,54,32,16);
console.log(max);  //54
var min = Math.min(3,54,32,16);
console.log(min);   //3

要找到数组中的最大或最小值,可以像下面这样使用apply()方法:

var arr = [1,2,3,4,5,6,7,8];
var max = Math.max.apply(Math, arr);
console.log(max); //8

3、舍入方法 Math.ceil() Math.floor() Math.round()

  • Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
  • Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
  • Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则)。
    4、random()方法

Math.random()方法返回大于等于0 小于1 的一个随机数。对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件。套用下面的公式,就可以利用Math.random()从某个整数范围内随机选择一个值。

值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
例如:
1、取1-10之间的数值:

var num = Math.floor(Math.random() * 10 + 1);

2、取2-10之间的数值:

var num = Math.floor(Math.random() * 9 + 2);

我们可以封装 成这样一个函数:

function selectForm(lowerValue, upperValue){
    var choices = upperValue - lowerValue + 1;
    return Math.floor(Math.random() * choices + lowerValue);
}
var num = selectForm(2, 10);

你可能感兴趣的:(Javascript-单体内置对象)