JS高级(五)

浅拷贝

  • 对象遍历只能用中括号。

  • 只拷贝最外面一层。

    for (var key in obj) {
      newObj[key] = obj[key];
    }

    es6新方法: Object.assign(newObj, obj);

深拷贝

  • for in 既可以遍历对象也能遍历数组,key就是数组下标

  • 使用递归

  • 如果拷贝对象的过程中,发现这个属性又是一个复杂数据类型,就继续递归这个函数再遍历,知道遍历到基本数据类型就直接赋值。

  • function copy(newObj, obj) {
      for (var key in obj) {
        if (obj[key] instanceof Array) {
          newObj[key] = [];
          copy(newObj[key], obj[key]);
        } else if(obj[key] instanceof Object) {
          newObj[key] = {};
          copy(newObj[key], obj[key])
         } else {
          newObj[key] = obj[key];
        }
      } 
    }

正则表达式

  • 用于匹配字符串的表达式

  • 作用:

    • 检索关键字
    • 过滤敏感字符
    • 表单验证
  • 特点:

    • 灵活性、逻辑性和功能性非常的强。
    • 可以迅速地用极简单的方式达到字符串的复杂控制
  • 使用:

    • 创建正则表达式

      • 方式一:通过实例化对象创建正则

        var reg  =  new RegExp(/abc/);
      • 方式二:通过字面量创建正则

        var reg = /123/;
  • 测试正则表达式

    • test()正则对象方法,用于检测字符串是否符合该规则,会返回true或false,参数是测试字符串。
    • reg.test(str);
  • 正则组成

    • 简单字符和特殊字符所构成(元字符)
  • 边界符

    • 用来提示字符所处位置,主要有两个字符
    • 如果单独使用就是匹配开头结尾。
    • 但是如果一起使用,精确匹配:
      • /^abc$/: 只能匹配abc
    • ^: 表示匹配行首的文本(以谁开始)
    • $: 表示匹配行尾的文本(以谁结束)
  • 字符类

    • [ ]方括号
      • 多选一,只要匹配一个就行
    • /^[abc]$/
      • 三选一
      • 只能有a或b或c
    • /^[a-z]$/
      • 从26个字母选一个,只能选一个,只能小写
      • /^[a-zA-Z]$/ 大小写
      • /^[a-zA-Z0-9]$/ 大小写,数字0-9
      • /^[a-zA-Z0-9_-]$/ 大小写,数字0-9,包括下划线和中划线
      • /^[^a-zA-Z0-9_-]$/ 在中括号中第一位放一个^是取反,匹配的都是false,不在规则里的是true
  • 量词符

    • 用来设定某个模式出现的次数。[a-z]量词符。
    • * 重复出现0次或更多次
    • + 重复1次或者更多次
    • ? 0次或者1次
    • {n} 重复n次或更多次
    • {n,} 重复n次或更多次
    • {n,m} 重复n到m次

括号总结

  • 大括号
  • 中括号
  • 小括号

预定义类

  • \d 0-9
  • \D 匹配所有0-9以外的字符
  • \w 匹配任意
  • \W 除了字母,数字下划线以外的所有字符
  • \s 匹配空格
  • \S 匹配非空格的字符

替换

  • replace ()
  • 字符串方法
  • /表达式/[修饰符]
    • g:全局匹配
    • i: 忽略大小写
    • gi:全局忽略大小写

猜你喜欢

转载自www.cnblogs.com/itxcr/p/11600107.html