所谓的内置对象就是不必显式实例化内置对象,因为在程序执行之前已经被实例化,直接可用了。
不属于任何其他对象的属性和方法,都是 Global 对象的属性和方法。 所有在全局作用域中定义的属性和方法,也都是它的属性和方法。
这两个方法可以对 URI(Uniform Resource Identifier,通用资源标识符)进行编码,以便发送给服务器。它们用 UTF-8 编码替换所有无效的字符。
encodeURI() 用于整个 URI 进行编码,她不会对本身属于 URI 中的特殊字符进行编码。
encodeURIComponent() 对 URI 中的某一段进行编码,她会对任何非标准字符进行编码。
var uri = "http://www.163.com/illegal value.html#start"; console.log(encodeURI(uri));//http://www.163.com/illegal value.html#start console.log(encodeURIComponent(uri));//http://www.163.com/illegal value.html#start注意: 一般来讲,encodeURIComponent() 用的比较多,因为在实践中更常对查询字符串进行编码。
encodeURI() 对应的解码方法是 decodeURI()。
encodeURIComponent() 对应的解码方法是 decodeURIComponent()。
var uri = "http://www.163.com/illegal value.html#start"; console.log(decodeURI(uri));//http://www.163.com/illegal value.html#start console.log(decodeURIComponent(uri));//http://www.163.com/illegal value.html#start注意: escape() 和 unescape() 方法已被废弃,所以在产品级的代码中,请一定使用 URI 方法。
她只接受一个参数,即要执行的 ECMAScript 字符串:
eval("alert('hi')"); 等价于 alert('hi');通过 eval() 执行的代码具有与该执行环境相同的作用域链,即这些代码可以引用在包含环境中定义的变量:
var msg = "hello world"; eval("alert(msg)");//hello world也可以在 eval() 中定义的一个函数,然后在该调用的外部代码中引用她:
eval("function sayHi() {alert('hi');}"); sayHi();严格模式下,在外部访问不到 eval() 中创建的任何变量或函数,而且为 eval 赋值也会导致错误。
注意: 因为 eval() 很强大,所以在使用时要非常谨慎,特别是在用它执行用户输入数据的情况下,因为可能会发生代码注入的安全问题。
ECMAScript 5 禁止给 undefined、NaN 和 Infinity 赋值。
ECMAScript 没有定义如何直接访问 Global 对象,但浏览器都将这个全局对象作为 window 对象的一部分加以实现。因此在全局作用域中定义的属性和方法,都成为这个 window 对象的属性和方法:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>在全局作用域中声明的所有变量和函数,都成为 window 对象的属性</title> </head> <body> <script type="text/javascript"> var color = "red"; function sayColor() { console.log(window.color); } window.sayColor();//red </script> </body> </html>注意: window 对象除了作为 Global 对象的角色外,还承担了很多任务,以后讲到浏览器对象模型时,会详细说明。
另一种取得 Global 对象的方法是:
var global = function(){ return this; }();因为在没有给函数明确指定 this 值的情况下,this 值等于 Global 对象。
Math 对象提供的计算功能与直接编码相比,执行速度会快很多。
她们能够确定一组数值中的最大值和最小值,接受任意多个数值参数:
var max = Math.max(3, 54, 32, 16); console.log(max);//54 console.log(Math.min(3, 54, 32, 16));//3要找到数组中的最大值和最小值,可以使用 apply() 方法:
var values = [1, 2, 3, 5, 6, 7, 8]; var max = Math.max.apply(Math, values);//Math 作为 apply() 的第一个参数,从而正确地设置 this 值。 console.log(max);//8她返回 0 与 1 之间的随机数,不包括 0 和 1。
下面的这个公式可以从某个整数范围内随机选择一个值:
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)比如,想选择 1 到 10 之间的数值:
console.log(Math.floor(Math.random() * 10 + 1));//1-10想选择 2 到 10 之间的数值:
console.log(Math.floor(Math.random() * 9 + 2));//2-10可以通过一个函数来计算可能值的总数以及第一个可能的值:
function selectFrom(lowerValue, upperVAlue) { var choices = upperVAlue - lowerValue + 1; return Math.floor(Math.random() * choices + lowerValue); } var num = selectFrom(2, 10); console.log(num);//2-10利用上面这个函数,可以方便地从数组中随机取出一项:
var colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"]; var color = colors[selectFrom(0, colors.length - 1)]; console.log(color);//colors 数组中随机取出任意颜色ECMA-262 只规定了这些方法,但不同的实现会采用不同的算法,因此也可能会有不同的精度。