5.7 单体内置对象

这些对象在ECMAScript 程序执行之前就已经存在了。

1 Global对象

所有在全局作用域中定义的属性和函数,都是Global 对象的属性。

1.1 URI 编码方法

encodeURI()和encodeURIComponent()方法可以对URI(Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器。

  • encodeURI()主要用于整个URI(例如,http://www.wrox.com/illegal value.htm),而encode-
    URIComponent()主要用于对URI 中某一段(例如前面URI 中的illegal value.htm)进行编码。
  • encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了
    %20。而encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符
  • decodeURI()只能对使用encodeURI()替换的字符进行解码。decodeURIComponent()能够解码使用encodeURIComponent()编码。
//编码
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));
//解码
var uri = "http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start";
//http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start
alert(decodeURI(uri));
//http://www.wrox.com/illegal value.htm#start
alert(decodeURIComponent(uri));

1.2. eval()方法

eval()方法就像是一个完整的ECMAScript 解析器

  • 在eval()中创建的任何变量或函数都不会被提升
  • 严格模式下,在外部访问不到eval()中创建的任何变量或函数
  • 对eval()的调用最终会被替换成定义函数的实际代码
//等价
eval("alert('hi')");
alert("hi");

1.3 属性

 1.4 window 对象

全局作用域中声明的所有变量和函数,就都成为了window对象的属性。

 ES5 之中,顶层对象的属性与全局变量是等价的。在浏览器环境指的是window对象,在 Node 指的是global对象。Web Worker 里面,指的是self对象。任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this

 ES6 为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

var a = 1;
// 如果在 Node 的 REPL 环境,可以写成 global.a
// 或者采用通用方法,写成 this.a
window.a // 1

let b = 1;
window.b // undefined

问题:

没法在编译时就报出变量未声明的错误,只有运行时才能知道。属性的创造是动态的

程序员很容易不知不觉地就创建了全局变量,顶层对象的属性是到处可以读写的

window对象有实体含义,指的是浏览器的窗口对象,也是不合适的。

2  Math对象

2.1 属性

 2.2  min()和max()方法

var max = Math.max(3, 54, 32, 16);
alert(max); //54
var min = Math.min(3, 54, 32, 16);
alert(min); //3
//要找到数组中的最大或最小值
var values = [1, 2, 3, 4, 5, 6, 7, 8];
var max = Math.max.apply(Math, values);

2.3 舍入方法

alert(Math.ceil(25.9)); //26:向上取整
alert(Math.floor(25.9)); //25:向下取整
alert(Math.round(25.5)); //26:四舍五入

2.4. random()方法

Math.random()方法返回大于等于0 小于1 的一个随机数

//值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
function selectFrom(lowerValue, upperValue) {
    var choices = upperValue - lowerValue + 1;
    return Math.floor(Math.random() * choices + lowerValue);
}
var num = selectFrom(2, 10);
aler t(num); // 介于 2 和10 之间(包括 2 和 10)的一个数值

2.5 其他方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值