3、引用类型(5)(《JS高级》笔记)

七、单体内置对象

7.1 Global对象

实际上,没有全局变量或全局函数;所有在全局作用域中定义的属性和函数,都是此对象的属性。

7.1.1 URI 编码方法

Global对象的encodeURI()encodeURIComponent()方法可以对URI进行编码,以便发送给浏览器。前者主要用于整个URI,而后者主要用于对URI中的某一段进行编码。主要区别在于,前者不会对本身属于URI的特殊字符进行编码,如冒号、正斜杠、问号和井字号;而后者则会对它发现的任何非标准字符进行编码。

var uri = "http://www.wrox.com/illegal value.htm#start";

//"http://www.wrox.com/illegal%20value.htm#start"
alert(encodeURI(uri));

//"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start"
alert(encodeURIComponent(uri));

说明:上述两个方法是对URI进行编码,对应的方法decodeURI()、decodeURIComponent()方法则是对URI进行解码。

7.1.2 eval()方法

此方法就是一个完整的ECMAScript解析器,它只接受一个参数,即要执行的Javascript字符串。如下面两行代码就是等价的:

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

当解析器发现代码中调用此方法时,它会将传入的参数当作实际的ECMAScript语句来解析,然后把执行结果插入到原位置。通过此方法执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链。这意味着通过此方法可以引用在包含环境中定义的变量:

var msg = "hello world";
eval("alert('msg ')");//"hello world"

同样我们可以在此方法调用中定义一个函数,然后在该调用的外部代码中引用这个函数:

eval("function sayHi(){ alert('hi');}");
sayHi();

但是注意,严格模式下,在外部访问不到此方法中创建的任何变量或函数。

7.1.3 Global对象的属性

属性 说明 属性 说明
undefined 特殊值undefined Date 构造函数Date
NaN 特殊值NaN RegExp 构造函数RegExp
Infinity 特殊值Infinity Error 构造函数Error
Object 构造函数Object EvalError 构造函数EvalError
Array 构造函数Array RangeError 构造函数Date
Function 构造函数Function ReferenceError 构造函数ReferenceError
Boolean 构造函数Boolean SyntaxError 构造函数SyntaxError
String 构造函数String TypeError 构造函数TypeError
Number 构造函数Number URIError 构造函数URIError

注意:ECMAScript 5明确禁止给undefined、NaN、Infinity赋值,这样做即使在非严格模式下也会导致错误。

7.1.4 window对象

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

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

说明:这是一种访问Global对象的方法,另一种取得Global对象的方法如下:

var global = function(){
  return this;
}();

以上代码创建了一个立即调用的函数表达式,返回this的值。如前所述,在没有给函数明确指定this值的情况下(无论是通过将函数添加为对象的方法,还是通过调用call()apply()),this值等于Global对象。而像这样通过简单地返回this来取得Global对象,在任何执行环境下都是可行的。

7.2 Math对象

7.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的平方根
Math.SQRT2 2的平方根

7.2.2 min()和max()方法

这两个方法用于确定一组数值中的最小值和最大值。

7.2.3 舍入方法

  • 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.round(25.9));    //26
alert(Math.round(25.5));    //26
alert(Math.round(25.1));    //25
        
alert(Math.floor(25.9));    //25
alert(Math.floor(25.5));    //25
alert(Math.floor(25.1));    //25

7.2.4 random()方法

此方法返回大于等于0小于1的一个随机数。这里如果我们需要一个从2数到109个数,因此可能值的总数就是9,而第一个可能的值就是2。多数情况下,其实都可以通过一个函数来计算可能值的总数和第一个可能的值,例如:

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

var num = selectFrom(2, 10);
alert(num);   //number between 2 and 10 (inclusive)

7.2.5 其他方法

方法 说明 方法 说明
Math.abs(num) 返回num的绝对值 Math.asin(x) 返回x的反正弦值
Math.exp(num) 返回Math.Enum次幂 Math.atan(x) 返回x的反正切值
Math.log(num) 返回num的自然对数 Math.atan2(y, x) 返回y/x的反正切值
Math.pow(num, power) 返回numpower次幂值 Math.cos(x) 返回x的余弦值
Math.sqrt(num) 返回num的平方根 Math.sin(x) 返回x的正弦值
Math.acos(x) 返回x的反余弦值 Math.tan(x) 返回x的正切值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,712评论 0 4
  • 有人说过,很多弯路到最后都成了直路,所有的坑到最后也都成了坦途;所谓的直路和坦途并不是摆在眼前的,都是不断的的...
    老衲法号一眉道人阅读 1,485评论 0 4
  • 本章内容 使用对象 创建并操作数组 理解基本的 JavaScript 类型 使用基本类型和基本包装类型 引用类型的...
    闷油瓶小张阅读 794评论 0 0
  • 今天我们来做十分简单的蛋炒饭 下面开始啦~ 准备食材: 食用油 隔夜的米饭适量 鸡蛋 葱花 食用盐 1 .将鸡蛋打...
    美食小分队阅读 466评论 0 1
  • 现在是晚上1点30分,我在床上不知道怎么入睡,我就这样一直闭着眼睛,但是却怎么也睡不着,重点是明天我还要早起搬砖,...
    人生海海2014阅读 335评论 0 1

友情链接更多精彩内容