原则
1,对内:封闭。方法划分的细一些,
2,对外,开放。提供Api和方法,配置
步骤:1,封装js
调用用配置:配置---合并配置----解构赋值
//封装的js
class Dalilog {
constructor(options){
//合并配置
1,方式一,解构赋值
// let {width="100px",title="默认标题",content="默认内容"} = options
// console.log(content,width)
}
}
//调用
new Dalilog({
width:"30%",
title:"测试胞体"
})
2,Object.assign()
Object.assign(arg1,arg2),arg1目标对象,arg2源对象
合并,arg2中有的对象,会覆盖掉arg1,否则用arg1
//方式2,Object.assign(arg1,arg2),arg1目标对象,arg2源对象
//合并,arg2中有的对象,会覆盖掉arg1,否则用arg1
let opts = Object.assign({
width:"100px",
title:"默认标题",
content:"默认内容",
height:"250px",
dragabel:true,//是否可拖拽
maskbale:true,//是否有遮罩
isCancel:false//是否有取消
},options)
console.log(opts)
}
}
//调用
new Dalilog({
width:"40%",
title:"客户输入"
})
2,调用,传入配置
3, 事件委托
把点击时间移到最外层,然后用switch case来判断,是哪个样式点击的
4,自定义事件
5,Promise
三种状态:pending、resolved、rejected---reject抛出错误
//提供方法:then: then:接收两个参数 onresolved,onrejected
三种返还值p.then(function(res){},function(err){})
1.then的回调 不返回,默认不返还、resolved状态的Promised对象
2,返回非Promise对象,默认返还promise对象,会把返回值作为参数保存起来
3,直接return Promise对象
6,async和await
异步函数,同步写法
await后面一定要是一个Promise对象
Promise的方法:Promise.resolve帮你返还状态为resolved的Promise的对象
Promise.reject帮你返还状态为rejected的Promise的对象
Promise.all([p1,p2,p3]) 把多个对象同时执行,一次性执行所有,所有结果放在then中
Promise.race([p1,p2,p3]).then(res=>{
//谁执行的快,拿到最快的结果
})
7,字符串的方法
search :匹配第一个符合结果的索引值位置;如果找不到,就返还-1;忽略全部匹配
8,元字符
正则中有特殊含义的非字母字符;
// . * (0次或者多次)+ (1次或多次)?(0次或者1次) $ ^ | \ {} [];
. 匹配除了\n \r (换行回车), \u2028或 、\u2029 以外的所有字符
// \转义,将特殊含义转变成字变量含义
[] 字符集合 [ab] a或者b /[^ab]/g 除了ab
^开头 $结尾
\w数字,字母,下划线
\d 数字 [0-9]+ 等同于\d
. =====>[^\r\n]
\d======>[0-9]
\w ======>[a-zA-Z_0-9]
边界符:\b 非\w都称为边界
():分组
{3}指定数量
?0次到1次 ?===>{0,1}
+一次到多次 + ====>{1,}
*0次到多次 * =====> {0,}
反向引用
let mytime = "2019-10-19"
let reg = /(\d{4}})-(\d{1,2})-(\d{1,2})/g
let res = mytime.replace(reg,"$3/$2/$1")
匹配模式:
g全局匹配
i忽略大小写
m多行模式
s可以配置换行
u是否皮质Unicode编码
y粘性模式 索引都连续
正则使用工具 regexper.com