定义:由ECMAScript实现提供的,不依赖与宿主环境的对象,这些对象在ECMASript程序执行之前就已经存在了。
意思就是说,开发人员不必显示的实例化内置对象,因为他们已经实例化了。例如Object、Array和String。ECMA-262还定义了两个单体内置对象:Global和Math。
Global对象
在某种意义上他是一个兜底的的对象,所有在全局作用域中定义的属性和方法都是Global的属性。诸如isNaN(),isFinite(),parseInt(),parseFloat()。
1、URI编码方法
encodeURI()主要用于整个URI
encodeURIComponent()主要对URI的某一段
主要区别:encodeURI()不会对属于URI的特殊字符进行编码,例如冒号、正斜杠。encodeURIComponent()则会对所有非标准字符进行编码
1 var uri = "http://www.wrox.com/illegal value.html#start"; 2 console.log(encodeURI(uri)); //http://www.wrox.com/illegal%20value.html#start 3 console.log(encodeURIComponent(uri)); 4 // http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.html%23start
与encodeURI()和encodeURIComponent()对应的两个方法是decodeURI()和decodeURIComponent()
1 var uri = "http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.html%23start"; 2 console.log(decodeURI(uri)); //http%3A%2F%2Fwww.wrox.com%2Fillegal value.html%23start 3 console.log(decodeURIComponent(uri)); //http://www.wrox.com/illegal value.html#start
2、eval()方法
eval()方法就像是一个完整的ECMAScript解析器,它只接受一个参数,即要执行的ECMAScript字符串
1 eval("alert('hi')");
相当于执行下面代码
1 alert("hi");
它会将传入的参数当做实际的ECMAScript语句来解析,然后把执行结果插入到原来位置。通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,所以通过eval()
执行的代码可以引用在包含环境中定义的变量。
1 var msg = "hello word"; 2 eval(alert(msg)); 3 4 eval("function sayHi(){alert('hi')}"); 5 sayHi();
在eval()中创建的任何变量和函数都不会被提升,因为在解析代码的时候,它们被包含在一个字符串中,它们只在eval()执行的时候创建。并且在严格模式下,在外部访问不到eval()中创建的任何变量和函数
1 console.log(sayHi()); //sayHi is not defined 2 eval("function sayHi(){alert('hi')}");
3、Global对象的属性
属 性 | 说 明 | 属 性 | 说 明 |
undefined | 特殊值undefined | Date | 构造函数Date |
NaN | 特殊值NaN | RegExp | 构造函数RegExp |
Infinity | 特殊值Infinity | Error | 构造函数Error |
Object | 构造函数Object | EvalError | 构造函数EvalError |
Array | 构造函数Array | RangeError | 构造函数RangeError |
Function | 构造函数Function | ReferenceError | 构造函数ReferenceError |
Boolean | 构造函数Boolean | SyntaxError | 构造函数SyntaxError |
String | 构造函数String | TypeError | 构造函数TypeError |
Number | 构造函数Number | URIError | 构造函数URIError |
4、Window对象
在Web浏览器中都是将这个全局对象作为window对象的一部分加以实现的,因此,在全局作用域中定义的所有变量和函数都成为了window对象的属性。
1 var color = "red"; 2 function sayColor(){ 3 console.log(window.color); 4 } 5 window.sayColor(); //"red"
另一种取的Global对象的方法是使用以下代码:
1 var global = function(){ 2 return this; 3 }();
Math对象
ECMAScript还为保存数学公式和信息提供了一个公共位置,即Math对象,与我们在javascript中编写的计算功能相比,Math对象提供的计算功能执行起来要快的多
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、min()和max()方法
1 var max = Math.max(3,56,98,32); 2 console.log(max); //98 3 4 var min = Math.min(3,56,98,32); 5 console.log(min); //3
要找到数组中最大值或者最小值,可以像下面这样使用apply()方法
1 var newArray = [1,2,3,6,5,4,8,9]; 2 var max = Math.max.apply(Math,newArray); 3 console.log(max);
3、舍入方法
Math.ceil()执行向上舍入
Math.floor()执行向下舍入
Math.round()执行标准舍入
1 alert(Math.ceil(25.9));//26 2 alert(Math.ceil(25.5));//26 3 alert(Math.ceil(25.1));//26 4 5 alert(Math.floor(25.9));//25 6 alert(Math.floor(25.5));//25 7 alert(Math.floor(25.1));//25 8 9 alert(Math.round(25.9));//26 10 alert(Math.round(25.5));//26 11 alert(Math.round(25.1));//25
4、random()方法
返回大于等于0小于1的一个随机数
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
选择一个2到10之间的数值
1 var num = Math.floor(Math.random() * 9 + 2); 2 console.log(num);
多数情况下,其实都可以通过一个函数来计算可能值的总数和第一个可能的值,例如
1 function selectForm(lowerValue,upperValue){ 2 var choices = upperValue - lowerValue + 1; 3 return Math.floor(Math.random() * choices + lowerValue); 4 } 5 var num = selectForm(2,10); 6 console.log(num); 7 8 //利用这个函数可以方便的从数组中随机的取出一项 9 10 var colors = ["red","green","blue","yellow","black","purple","brown"]; 11 var color = colors[selectForm(0,colors.length-1)]; 12 console.log(color);
5、其他方法
Math对象中还包含其他一些与完成各种简单或复杂计算有关的方法。见下表:
方 法 | 说 明 | 方 法 | 说 明 |
Math.abs(num) | 返回num的绝对值 | Math.asin(x) | 返回x的反正弦值 |
Math.exp(num) | 返回Math.E的num次幂 | Math.atan(x) | 返回x的反正切值 |
Math.log(num) | 返回num的自然数 | Math.atan2(y,x) | 返回y/x反正切值 |
Math.pow(num,power) | 返回num的power次幂 | Math.cos(x) | 返回x的余弦值 |
Math.sqrt(num) | 返回num的平方根 | Math.sin(x) | 返回x的正弦值 |
Math.acos(x) | 返回x的反余弦值 | Math.tan(x) | 返回x的正切值 |