首页 > 代码库 > javascript那些事儿(二)Global对象用法

javascript那些事儿(二)Global对象用法

1、Global对象: 所有在全局作用域内定义的属性和方法,都是Global对象的属性
2、Global对象不直接使用,并且不能用new 运算符创建,它在 Scripting 引擎被初始化时创建,并立即使其方法和属性可用。
例如:isNaN,isFinite(),parseInt(),parseFloat()都是Global对象的方法
下面介绍一下比较重要的几个方法

(1)URI编码解码:encodeURI()\encodeURIComponent(), decodeURI\decodeURIComponent()
encodeURI()和encodeURIComponent()用于对URI(通用资源标识符)进行编码,以便发送给浏览器。
浏览器不能理解和接收一些特殊字符,比如:空格,所以这两个方法用UTF-8编码替换URI中的无效字符以使浏览器能够识别。
encodeURI():  主要用于整个URI,不会对本身属于URI的特殊字符进行编码,如冒号,正斜杠、问号、井号
encodeURIComponent() : 主要用于对URI中某一段进行编码,会对它发现的任何非标准字符进行编码。

var uri = "http://www.baidu.com/aa value#query";

//只有空格被替换
console.log(encodeURI(uri));  //输出:http://www.baidu.com/aa%20value#query,把空格编码成%20

//使用对应的编码替换所有非字母字符
console.log(encodeURIComponent(uri)); //输出: http%3A%2F%2Fwww.baidu.com%2Faa%20value%23query

//最佳实践:
//encodeURI:  对整个URI使用
//encodeURIComponent():  对URI后面的字符串使用
//

//decodeURI() : 对使用encodeURI编码的字符进行解码
//decodeURIComponent() : 对使用encodeURIComponent编码的字符进行解码

var uri2 = "http://www.baidu.com/aa%20value#query";
console.log(decodeURI(uri2));  //http://www.baidu.com/aa value#query

var uri3 = "http%3A%2F%2Fwww.baidu.com%2Faa%20value%23query";
console.log(decodeURI(uri3));  //http%3A%2F%2Fwww.baidu.com%2Faa value%23query
console.log(decodeURIComponent(uri3));  //http://www.baidu.com/aa value#query

(2)eval() : 接收一个参数,即javascript字符串,类似于一个ECMAScript解析器:

eval("alert('hello,nodejs')");  //等价于 alert('hello,nodejs');

//在eval()中执行的代码被认为是包含该次调用的执行环境的一部分,被执行的代码与eval语句执行环境具有相同的作用域链
var str = "hello,nodejs";
eval("alert(str)"); // alert("hello,nodejs");

eval("function hello(){alert('hello,world');}");
hello();  //hello,world

//严格模式下,在外部访问不到eval()中定义的任何变量或函数,同样,在严格模式下,为eval也会导致错误产生。
"user strict";
eval("var str = 'hello,nodejs';"); 
alert(str); //错误
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">(3)Global对象属性:undefined,NaN,Infinity,都是Global对象的属性。</span>
此外,所有原生类型的构造函数也都是Global对象的属性:Object,Function,Array,Number,Boolean,String.

(4)window对象:在全局作用域中声明的所有变量和函数,都是window对象的属性:
 var name = "xiaoming";

 function printName(){
 	alert(window.name);
 }

 window.printName(); //'xiaoming'





javascript那些事儿(二)Global对象用法