- 正则表达式
- 正则表达是英文RegExp
- 正则字面量写法/
- 利用构造函数方式,创建一个正则对象,能否匹配所有单个数字new RegExp('\\d','g')
- 正则表达式修饰符:忽略大写-->i;全局匹配:->g
- 正则方法
- 查找match
- 替换replace
- 测试:test
- 正则捕获组
- 捕获组符号:()
- 代表1好捕获组的值$1
- 手机号码正则:/^1[3-9]\d{9}$/
- JSCORE
- 早期JS中,函数的变量arguments保存了所有传入的参数
- 函数的重载是指通过判断参数的数量或类型不同,进而实现不同的效果
- 浏览器中,网页默认的所有JS属性都存储在window对象里
- JS中有4种作用域:全局作用域,函数作用域,块级作用域,脚本作用域
- 闭包产生的根本原因,是函数声明时保存其所在的词法环境,函数提升后,不管在哪里都可以正常运行使用
- 函数作用域会使用距离其最近的作用域中的变量,这种机制称为作用域链
- 闭包中的变量存在在函数作用域中,所以不存在全局变量污染
- 对象类型属于引用类型,每个值对应了一个数字,这种特殊对象类型时数组
- 一个数组类型,其中存在某些属性的名字是非数字,成为关联数组
- 普通函数的this,指运行时所在的对象
- 箭头函数的this,指向生命是所在的作用域的this
- 构造函数的名称应使用大驼峰命名法,通过new关键词触发
- 构造函数中如果直接声明方法,则每次构造对象都需要声明新的方法,所以每个构造函数都会自带一个prototype变量来储存方法,其中文名为原型对象
- 原型链:当调用一个对象的属性时,如果对象本身没有,则到其__proto__变量中查找
- 替换对象原型,使用Object对象的setPrototypeOf方法实现
- for...in...会遍历对象及其原型中所有可遍历属性,可以通过Object的keys方法,只读取对象自身属性
- 严格模式下,JS顶部书写use strict
- 严格模式中,为避免错误的全局变量声明,要求变量必须声明后才能使用
- 严格模式中,直接调用函数,函数中的this会指向undefined,来当值错误声明全局变量
- 严格模式下,报了很多之前不报的错误,是因为取消了静默失败
- 早期匿名函数自调用是,需要使用arguments的callee变量实现,后被匿名函数自调用所替代
- 让对对象属性操作方法
- writable -- 是否可写,属性能否被重新赋值
- configurable -- 是否可以重新配置
- value -- 赋值,指定默认值
- enumerable -- 可遍历
- get -- 计算属性,不需要()就能触发函数
- set -- 属性监听 -- 监听属性的赋值
- defineProperty -- 精确匹配单个对象的属性
- defineProperties -- 同时匹配多个属性的值
- 保户对象的3个方法
- 阻止新增preventExtensions
- 阻止增删:seal
- 阻止增删改:freeze
- 创建一个新的对象,创建同时指定其原型,使用create方法
- 函调用时,指定其this指向,且剩余参数依次书写,使用call方法
- 函数调用时,指定其this指向,剩余参数用数组书写,使用apply方法
- 使用bind函数,就把函数克隆出一个新的函数,指定其this指向和剩余参数,调用后续随意执行
- 数组的高级方法,通过传递回调函数实现效果
- every -- 判断数组每个元素都满足
- some -- 判断至少有一个元素满足
- filter -- 得到数组中满足条件的元素组成新的数组
- map -- 把原数组每个元素通过函数处理后,把处理结果形成新的数组
- forEach -- 遍历数组
- reduce -- 把数组的内容,归纳总结成位移的值
- 模板字符串使用``包围,${}数字而JS代码,支持换行
- const是常量,必须在声明时赋值,赋值后无法修改,因其引用类型
- 通过for...of...可以快速遍历数组,适用于没有forEach的类数组类型
- 箭头函数的语法糖,可以实现超级简化,假如方法体只有一行代码,就可以省略{}和return
- 参数的剩余参数,使用...符号
- 数组,对象的展开,使用...符号
- 数组解构:let [a,,b]=[11,22,33] ---->解构语法:将[11,22,33]中的11和33放到了变量a和b中
- 面向对象的英文简称:OOP,其三大特征是封装,继承,多态
- class的静态属性,可以直接通过类型调用,声明静态属性使用static关键词
- 继承的关键词:extends
- 子类中书写父类相同的属性,此时子类中想调用父类属性,使用关键词super
- 通过Promise可以解决回调地狱问题,其中resolve触发then操作,reject触发catch操作
- Promise三种状态
- pending 刚声明后
- fulfilled resolve调用后
- rejected reject调用后