单体内置对象
JS对内置对象的定义是:”由JS提供实现提供的、不依赖宿主环境的对象,这些对象在JS程序执行之前就已经存在了“。
Global对象
JS中的Global对象在某种意义上是作为一个终极的”兜底儿对象“来定义的。换句话说,不属于任何其他对象的属性和方法,最终都是它的属性和方法。事实上,没有全局变量或全局函数;所有在全局作用域中定义的属性和函数,都是Global对象的属性。
URI编码方法
Global对象的encideURI()和encodeURICOMPONENT()方法可以对URI(Uniform Resource Identifiers,通用资源标识符)进行编码,以便发送给浏览器。有效的URI中不能包含某些字符,例如空格。而这两个URI编码方法用特殊的UTF-8编码替换所有无效的字符,从而让浏览器能够接受和理解。
encodeURI()主要用于整个URI,而encodeURIComponent()主要用于对URI中的某一段进行编码。它们的主要区别在于,encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号、井号;而encodeURIComponent()则会对它发现的任何非标准字符进行编码。
使用encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了%20.而encodeURIComponent()则会使用对应的编码替换所有非字母数字字符。
对应的方法分别是decodeURI()和decodeURIComponent()。
eval()方法
eval()方法就像是一个完整的JS解析器,它只接受一个参数,即要执行的JS字符串。通过eval()执行的代码被认为是包含该此调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链。这意味着通过eval()执行的代码可以引用在包含环境汇总定义的变量。
var msg = "hello world";
eval("alert(msg)"); // "hello world"
在eval()中创建的任何变量或函数都不会被提升,因为在解析代码的时候,它们被包含在一个字符串中;它们只在eval()执行的时候创建。
严格模式喜爱,在外部访问不到eval()创建的任何变量和函数,为eval赋值也会导致错误。
Global对象的属性
属性 | 说明 | 属性 | 说明 |
---|---|---|---|
undefined | 特殊值undefined | Date | 构造函数Date |
NaN | 特殊值NaN | RegExp | 构造函数RegExp |
Infinity | 特殊值Infinity | Error | 构造函数Error |
Object | 构造函数Object | EvalError | 构造函数EvalError |
Array | 构造函数Array | RangError | 构造函数RangError |
Function | 构造函数Function | ReferenceError | 构造函数ReferenceError |
Boolean | 构造函数Boolean | SyntaxError | 构造函数SyntaxError |
String | 构造函数String | TypeError | 构造函数TypeError |
Number | 构造函数Number | URIError | 构造函数URIError |
window对象
ECMAScript虽然没有指出如何直接访问Global对象,但Web浏览器都是将这个全局对象作为window对象的一部分来加以实现的。因此,在全局作用域中声明的所有变量和函数,就都成了window对象的属性。
function sayColor(){
alert(window.color);
}
window.sayColor(); //"red"
/*这里定义了一个名为color的全局变量和一个名为sayColor()的全局函数。在sayColor()内部,可以通过window.color来访问color变量 ,以说明全局变量是window对象的属性。然后又使用window.sayColor()来直接通过window对象调用这个函数,结果就显示在了警告框中*/
Math对象
ECMAScript还为保存数学公式和信息提供了一个公共位置,即Math对象。Math对象中还提供了辅助完成这些计算的属性和方法。
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的平方根 |
min()和max()方法
min()和max()方法用于确定一组数值中的最小值和最大值。这两个方法都可以接收任意多个数值参数,例如:
var min=Math.min(3,54,32,16);
alert(min);//3
var max=Math.max(3,54,32,16);
alert(max);//54
舍入方法
- Math.ceil():执行向上舍入,即它总是将数值向上舍入为最接近的整数。
- Math.floor():执行向下舍入,即它总是将数值向下舍入为最接近的整数。
- Math.round():执行标准舍入,即它总是将数值四舍五入为最接近的整数。
alert(Math.ceil(25.9));//26
alert(Math.ceil(25.5));//26
alert(Math.ceil(25.1));//26
alert(Math.floor(25.9));//25
alert(Math.floor(25.5));//25
alert(Math.floor(25.1));//25
alert(Math.round(25.9));//26
alert(Math.round(25.5));//26
alert(Math.round(25.1));//25
random()方法
Math.random()返回方法返回大于等于0小于1的一个随机数。
值=Math.floor(Math.random()*可能值的总数+第一个可能的值)
var num=Math.floor(Math.random()*10+1);//1到10
var num=Math.floor(Math.random]()*9+2);//2到10
其他方法
方法 | 说明 |
---|---|
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.atan2(y,x) | 返回y/x 的反正切值 |
Math.cos(x) | 返回x 的余弦值 |
Math.sin(x) | 返回x 的正弦值 |
Math.tan(x) | 返回x 的正切值 |