1.正则表达式
-
正则表达式英文
RegExp
-
正则字面量写法
/
-
利用构造函数方式,创建一个正则对象,能够匹配所有单个数字
new RegExp('\\d','g')
-
正则表达式修饰中
-
忽略大小写→
i
-
全局匹配→
g global
-
-
正则的方法
-
查找
match
-
替换
replace
-
测试
test
-
-
正则捕获组
-
捕获组符号
()
-
代表1号捕获组的值
$1
-
-
手机号码正则
/^1[3-9]\d{9}$/
2.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 把数组的内容,归纳总结成唯一的值
-
30.模板字符串使用反引号
包围,${}
书写JS代码,支持换行
31.const是常量
,必须在声明时赋值,赋值后无法修改,因其为引用类型
32.通过for...of...
可以快速遍历数组,适用于没有forEach的类数组类型
33.箭头函数的语法糖,可以实现超级简化,假如方法体只有一行代码,就可以省略{ }和return
34.参数的剩余参数,使用...
符号
35.数组、对象的展开,使用...
符号
36.通过数组的结构语法,把数组的[11,22,33]中的11和33放到变量a和b中
let [a,b,]=[11,22,33]
37.利用对象解构语法,把{name:"亮亮",age:33}的name值放入gname变量,age放入age变量
let {name:gname,age}={name:"亮亮",age:33}
38.面向对象的英文简称:OOP
,其三大特征分别是:封装 继承 多态
39.class的静态属性,可以直接通过类型调用,声明静态属性使用static
关键词
40.继承的关键词:extends
41.子类中书写与父类相同的属性,此时子类中想调用父类属性,使用关键词super
41.通过Promise
可以解决回调地狱问题,其中resolve
触发then操作,reject
触发 catch操作
42.promise三种状态
pending
刚声明后
fulfilled
resolve调用后
rejected
reject调用后