Js 单例内置对象

单例内置对象


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)]; //获得随机颜色
    
posted @ 2021-05-22 02:08  王子饼干  阅读(112)  评论(0编辑  收藏  举报