单例内置对象
1.Global对象
是兜底对象,全局作用域上的函数变量都会成为global的属性 例如:isNaN()、 isFinite()、parseInt()和parseFloat()
其他常用方法
- encodeURI()、encodeURIComponent() 和 decodeURI()、decodeURIComponent()
let uri = "http://www.wrox.com/illegal value.js#start";
//"http://www.wrox.com/illegal%20value.js#start"
console.log(encodeURI(uri));
//"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start"
console.log(encodeURIComponent(uri));
encodeURI()不会编码属于URL组件的特殊字符,比如冒号、斜杠、问号、井号,decodeURI() 也不会解码这些字符
-
eval()
这个方法是一个完整的JS解释器,接收一个字符串参数,当解释器发现eval()调用时,会将参数解释为实际的 ECMAScript语句,然后将其插入到该位置。-
eval()可以访问外部变量
let msg = "hello world"; eval("console.log(msg)"); // "hello world"
-
eval() 定义的函数可以被后面的代码访问到,但变量无法被访问。(严格模式禁止在eval中声明)
eval("let msg = 'hello world';"); console.log(msg); // Reference Error: msg is not defined
-
虽然无法直接访问到global,但浏览器将window对象实现为Global对象的代理
注:当一个函数在没有明确(通过成为某个 对象的方法,或者通过call()/apply())指定this值 的情况下执行时,this值等于Global对象
2.Math
比较简单只给出几个小技巧
-
利用Math.max() 和Math.min() 求数组最大值和最小值
let values = [1, 2, 3, 4, 5, 6, 7, 8]; let max = Math.max(...val);
-
Math.ceil()、Math.floor()、Math.round() 分别为向上、向下、四舍五入取整
-
利用 Math.random()得到范围内的值
function selectFrom(lowerValue, upperValue) { let choices = upperValue - lowerValue + 1; return Math.floor(Math.random() * choices + lowerValue); } let num = selectFrom(2,10); console.log(num); // 2~10范围内的值,其中包含2和10 let colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"]; let color = colors[selectFrom(0, colors.length-1)]; //获得随机颜色