• JavaScript 小技巧汇总


    • 判断一个变量是否申明
    • if (typeof v === "undefined") {
        // ...
      }
    • 判断一个变量是否是函数
    • function f() {}
      typeof f
      // "function"
    • 区别一个变量是数组还是对象
    • var o = {};
      var a = [];
      
      o instanceof Array // false
      a instanceof Array // true
    • base64转码 (btoa 直接使用中文会出错)
    • var string = 'Hello World!';
      btoa(string) // "SGVsbG8gV29ybGQh"
      atob('SGVsbG8gV29ybGQh') // "Hello World!"
      function b64Encode(str) {
        return btoa(encodeURIComponent(str));
      }
      
      function b64Decode(str) {
        return decodeURIComponent(atob(str));
      }
      
      b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
      b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"
    • 查看对象所有属性(本身的属性,不包含继承的)
    • var o = {
        key1: 1,
        key2: 2
      };
      
      Object.keys(o);
      // ['key1', 'key2']
    • 判断对象是否有某个属性
    • var o = new Object();
      o.hasOwnProperty('toString') // false
      
      'toString' in o // true
      hasOwnProperty 判断对象本身 ,而 in 会判断对象父类
    • 只想遍历对象自身属性
    • for (var key in person) {
        if (person.hasOwnProperty(key)) {
          console.log(key);
        }
      }
    • 遍历类数组对象
    • // for循环
      function logArgs() {
        for (var i = 0; i < arguments.length; i++) {
          console.log(i + '. ' + arguments[i]);
        }
      }
      
      // forEach方法
      function logArgs() {
        Array.prototype.forEach.call(arguments, function (elem, i) {
          console.log(i+'. '+elem);
        });
      }
    • 数组的遍历
    • var a = [1, 2, 3];
      a.foo = true;
      
      for (var key in a) {
        console.log(key);
      }
      // 0
      // 1
      // 2
      // foo

      for ... in 循环会遍历非数组key

    • // for循环
      for(var i = 0; i < a.length; i++) {
        console.log(a[i]);
      }
      var colors = ['red', 'green', 'blue'];
      colors.forEach(function (color) {
        console.log(color);
      });
    • 获取当前时间戳
    • var timestamp=new Date().getTime();
    • 时间转时间戳
    • // 也很简单
      var strtime = '2014-04-23 18:55:49:123';
      var date = new Date(strtime); //传入一个时间格式,如果不传入就是获取现在的时间了,这样做不兼容火狐。
      // 可以这样做
      var date = new Date(strtime.replace(/-/g, '/'));
      
      // 有三种方式获取,在后面会讲到三种方式的区别
      time1 = date.getTime();
      time2 = date.valueOf();
      time3 = Date.parse(date);
      
      /* 
      三种获取的区别:
      第一、第二种:会精确到毫秒
      第三种:只能精确到秒,毫秒将用0来代替
      比如上面代码输出的结果(一眼就能看出区别):
      1398250549123
      1398250549123
      1398250549000 
      */;
    • 时间格式化
    • function timetrans(date){
          var date = new Date(date*1000);//如果date为10位不需要乘1000
          var Y = date.getFullYear() + '-';
          var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
          var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
          var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
          var m = (date.getMinutes() <10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
          var s = (date.getSeconds() <10 ? '0' + date.getSeconds() : date.getSeconds());
          return Y+M+D+h+m+s;
      }
    • 对一个数进行取整
    • 2.9 | 0 // 2
      -2.9 | 0 // -2
      
      ~~2.9 // 2
      ~~47.11 // 47

      使用否运算取整,是所有取整方法中最快的一种

  • 相关阅读:
    jenkins部署前端node项目实例
    阿里云云盘扩容数据盘_Linux
    输入子系统
    触摸屏设备驱动程序
    LCD设备驱动程序
    IIC设备驱动程序
    看门狗驱动程序
    RTC实时时钟驱动
    网络设备驱动程序数据结构
    Linux 设备驱动模型
  • 原文地址:https://www.cnblogs.com/neverleave/p/6290282.html
Copyright © 2020-2023  润新知