加载中......

JavScript学习笔记二

标准对象

Date

  • 获取本机当前时间
    var now = new Date();
    now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
    now.getFullYear(); // 2015, 年份
    now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月
    now.getDate(); // 24, 表示24号
    now.getDay(); // 3, 表示星期三
    now.getHours(); // 19, 24小时制
    now.getMinutes(); // 49, 分钟
    now.getSeconds(); // 22, 秒
    now.getMilliseconds(); // 875, 毫秒数
    now.getTime(); // 1435146562875, 以number形式表示的时间戳
    
  • 创建一个指定日期和时间的Date对象
    var d = new Date(2015, 5, 19, 20, 15, 30, 123);
    d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
    
  • 解析一个符合ISO 8601格式的字符串,返回时间戳
    var d = Date.parse('2015-06-24T19:49:22.875+08:00');
    d; // 1435146562875
    
  • 时间戳转Date
    var d = new Date(1435146562875);
    d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
    d.getMonth(); // 5
    

RegExp

  • 匹配字符 (大写的取反)
    • \d :一个数字 [0-9]
    • \w :一个数字或字母及下划线 [a-zA-Z0-9_]
    • \s :一个空白字符 [<空格>\t\r\n\f\v]
  • 匹配数量
    • * :匹配一个字符串 0-无限
    • + :匹配一个字符串 1-无限
    • ? :匹配一个字符串 0-1
    • {n} :匹配一个字符串 n
    • {n,m} :匹配一个字符串 n-m
  • 匹配边界
    • ^ :匹配输入字符串的开始位置。
    • $ :匹配输入字符串的结束位置。
  • RegExp写法
    var re1 = /ABC\-001/;
    var re2 = new RegExp('ABC\\-001');
    
    re1; // /ABC\-001/
    re2; // /ABC\-001/
    
    • test方法用于测试给定的字符串是否符合条件

JSON

  • 序列化 把对象序列化成json字符串
    JSON.stringify(Object obj, Array fliter, String str)

    • obj : 需要序列化的对象
    • fileter: 需要被序列化的属性
    var xiaoming = {
        name: '小明',
        age: 14,
        gender: true,
        height: 1.65,
        grade: null,
        'middle-school': '\"W3C\" Middle School',
        skills: ['JavaScript', 'Java', 'Python', 'Lisp']
    };
    var s =JSON.stringify(xiaoming);//{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}
    
  • toJSON()
    定义一个toJSON()的方法,直接返回JSON应该序列化的数据

      var xiaoming = {
          name: '小明',
          age: 14,
          gender: true,
          height: 1.65,
          grade: null,
          'middle-school': '\"W3C\" Middle School',
          skills: ['JavaScript', 'Java', 'Python', 'Lisp'],
          toJSON: function () {
              return { // 只输出name和age,并且改变了key:
                  'Name': this.name,
                  'Age': this.age
              };
          }
      };
    
      JSON.stringify(xiaoming); // '{"Name":"小明","Age":14}'
    
  • 反序列化
    JSON.parse()

    JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]
    JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}
    JSON.parse('true'); // true
    JSON.parse('123.45'); // 123.45
    

    JSON.parse()还可以接收一个函数,用来转换解析出的属性:

    var obj = JSON.parse('[1,2,3,true]', function (key, value) {
        if (key === '1') {
            return value + '同学';
        }
        return value;
    });
    console.log(JSON.stringify(obj)); // {name: '小明同学', age: 14}
    

面向对象

  • 创建对象
    1. 直接创建对象
    var xiaoming = {
      name: '小明',
      age: 14
    }
    
    1. 普通函数作构造函数创建
    //定义一个函数
    function Student(name){
      this.name = name;
      this.hello = function(){
          return `Hello ${this.name}`;
        }
    }
    
     var xiaoming = new Student("xiaoming");
    
    • 共享的方法
    //定义一个函数
    function Student(name){
      this.name = name;
      /*this.hello = function(){
          return `Hello ${this.name}!`;
        }//每个对象中都有一份这个函数
      */
    }
    
    //绑定在prototype中,每个对象只有一份,共享的方法
    Student.prototype.hello = function(){
      return `Hello ${this.name}!`;
    }
     var xiaoming = new Student("xiaoming");
    
  • 原型继承
    学习资料
  • class继承
    新的关键字class从ES6开始正式被引入到JavaScript中
    • 定义类:
    class Student {
        constructor(name) {
            this.name = name;
        }
    
        hello() {
            alert('Hello, ' + this.name + '!');
        }
    }
    
    注意没有function关键字
    这样就避免了Student.prototype.hello = function () {...}这样分散的代码。
    • 继承
    class PrimaryStudent extends Student {
         constructor(name, grade) {
             super(name); // 记得用super调用父类的构造方法!
             this.grade = grade;
         }
    
         myGrade() {
             alert('I am at grade ' + this.grade);
         }
     }
    
  • in运算符
    in返回一个布尔值,表示一个对象是具有某个属性
    'length' in Date // true
    'toString' in Date // true
    
    in通常和for一起用
    for(item in items){
    
    }
    

异步操作

posted @ 2021-10-02 13:49  MarchXD  阅读(66)  评论(0编辑  收藏  举报